通过返回的数据,要么为真要么为假,true和false
    靶场less-5
    比如如果查寻到则返回页面为真
    image.png
    如果查询失败则没有返回
    image.png
    使其报错
    image.png
    使其不报错
    image.png
    我们控制or后面的条件使其返回我们想要的数据
    ?id=1222’ or 1 %23
    image.png
    ?id=1222’ or 0 %23
    image.png
    substr(要截取的字符串,截取字符串的起始位置,偏移量)
    当我们截取字符串与这个字符不等时则返回空
    image.png
    如果相等则返回正确
    image.png
    查看版本信息
    第一个字符5
    image.png
    第二个字符.
    image.png
    第三个字符5
    image.png
    以此类推
    可以用偏移量判断
    image.png
    image.png
    查询数据库的第一个字符串
    ?id=1222’ or (select substr(table_name,1,1) from information_schema.tables where table_schema = database() limit 0,1) = ‘e’ %23
    image.png
    但是这种方法很我们很难判断他的范围
    所以我们将查询结果转换为ascii码进行判断
    http://172.16.58.244:83/Less-5/?id=1222’ or (select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema = database() limit 0,1) > 1 %23
    image.png
    image.png
    image.png
    大于100,不大于102
    换成等于号再试
    image.png
    ascii编码是101
    我们利用python查询一下ascii编码
    这里介绍几个python的函数
    chr作用是将一个十进制整型数据转换成 ASCII 码表中对应的单个字符
    otc 作用是将一个十进制整型数据转换成八进制表示的字符串。
    bin 作用是将一个十进制整型数据转换成二进制表示的字符串。
    hex 作用是将一个十进制整型数据转换成十六进制表示的字符串
    ord 作用是将一个 ASCII 码表中的单个字符转换成对应的十进制整型数据

    chr(101)
    image.png
    查到第一个字符是e
    第二个字符同样的方法
    image.png
    image.png
    109是m
    通过这种方式逐一判断
    但这种方式还是很慢

    我们用bp抓包进行查询
    发送到intruder
    intruder是一个用来做包的重放的,经常用来做暴力破解
    image.png
    target是我们要渗透的地址和端口
    positions是我们要渗透的包
    image.png
    首先先clear
    sniper表示只能设置一个包
    我们要渗透的是发过来的109的这个数据
    添加上变量
    image.png
    然后再payloads里面设置payload type为numbers
    image.png
    从1到128,间隔1
    image.png

    使用intruder start attack爆破
    image.png
    对比长度找到该字符串
    image.png
    其他位置的字符串只需要改对应的位置就行
    image.png
    battering ram能接受两个参数
    image.png
    设置两个变量,然后payload 值只能设置一个,意思就是他俩发送的内容都是一样的
    1,1:2,2:3,3……

    pitchfork 能给两个变量分别配置两个参数

    image.png
    image.png

    image.png

    发的是n个包(最少的那个)分别取得这两个字典得数据
    比如我上面的配置
    最后得结果就是15个包,取得payload分别是两个字典里的
    image.png
    cluster bomb就是组合所有可能性进行发包
    image.png
    就是
    当第一个值为payload1的第一个值时,跑完第二字典的所有第二个值再跑payload1的第二个值
    image.png
    像我们之前的值它就要跑1920遍字典
    image.png
    最后得到结果
    image.png
    判断这个表名称只有6个,再用python的chr函数分别查询这几个字符
    image.png
    得到这个表名称为emails