基于报错的盲注

说到SQL盲注,一般来说就是两种:布尔盲注和时间盲注。布尔盲注基于True和False,是比较常用和便捷的手法;时间盲注基于延时,较为麻烦,一般来说是作为没有任何回显情况下的最后的注入手段。而很少见到有人提到基于报错的盲注方式。

报错盲注思路类似布尔盲注,利用的是SQL语句报错与否造成的回显结果的不同,我们需要找到一句能够报错的SQL语句,而且它还要满足一个条件:能够用布尔来控制报错与否。

下面举一个简单的例子,我们尝试这么一条SQL语句:

1
select pow(999,999)

我们可以看到回显是:

1
#1690 - DOUBLE value is out of range in 'pow(999,999)'

我们改造一下,改造成能够用于盲注的句式:

1
select * from flag.flag where fid=1 and (database()='flag')*999*pow(999,102)

对’flag’字符串进行修改,可以看到不同的结果:

思路很简单,就是利用MySQL的double类型溢出报错,而pow函数会返回double类型的数据。


这只是一个简单的思路和用法,如果有更多的骚操作和骚思路,欢迎跟我一起交流~


基于报错的盲注
http://yoursite.com/2019/02/07/基于报错的盲注/
作者
Aluvion
发布于
2019年2月7日
许可协议