菜逼也写科普文系列:Mysql Time-Based Blind SQL Injection tips

此文由某自称狗4的菜逼翻译自某外国文章并用自己的语言进行了简单的总结。:
来自:http://v4an.com/mysql-time-based-blind-sql-injection-tips.html

当一个SELECT查询是由数据库引擎执行,由语句返回的所有记录进行判断,以确认它们满足WHERE子句.
由于WHERE子句为每行验证,能够通过注入一个小的时间延迟的WHERE子句来估计多少记录在表中.
所以当不知道这个表有多少列的时候可以按照这个方法进行猜测,
因为:
延迟 = 正常查询的延迟 + 睡眠的延迟
总条数 = 列(多少列) x 睡眠的延迟
这里我拿一个有15条列的表来做说明
mysql1
进行第一个查询,sleep 0.001 设置一个很短的时间.

2
第一个查询可以看出,除非在上千条记录,否则是不容易判断出来的.
进行第二个查询,第一个延迟时间x 100,设置为0.1(相比第一个延迟设置较长时间)

3
在增加一点sleep time,进行精确的判断.

4
返回经过了7.5s,所以我们得出这个表中一共有15条列,
通过本地的验证,可以看到这个方法是正确的 🙂
在各种条件苛刻的注入环境中.
先来猜测出列的条数再做判断是否进行

留下评论