这周末遇上高校战“疫”赛,打了两天,这里记录一下做的和参与做的几道题
easy_trick_gzmtu
传入2020 和Y都能查出结果,传入y20,yy,20y也可以,
猜测后端对参数做了date()转换,用\可以使date后的字符串不变,于是构造盲注脚本
注入出一个admin用户
有个读文件的地方,限制了只能本地读取文件,发现file://localhost/
可以绕过
|
|
最后反序列化读flag
webct
有个上传文件的点,和一个连接mysql数据库的点
mysql数据库传入的option参数可控,将其设置为8可以开启MYSQLI_OPT_LOCAL_INFILE。
但是直接读文件失败了,想到构造phar文件让msyql去读取触发反序列化
上传之后直接用MysqlRouge触发反序列化即可,
payload:
最后/readflag
fmkq
审计代码发现可以构造SSRF
http://121.37.179.47:1101/?head=\&url=xxx.xxx.xxx.xxx
发现
传入begin=%s%
,可以读到output,于是得到有回显SSRF
扫描内网发现8080端口开放
通过这个接口自带的列目录功能可以发现flag在
但是不能直接读
但是如果file参数传入{file}时会被解析成error,尝试{file.class}之后确定后端为python且存在格式化字符串漏洞
存用
可读取到vipcode的值
有了vipcode可以读取源码和列目录,知道flag在/fl4g_1s_h3re_u_wi11_rua
里,但是读不了,于是读取项目代码,如下:
/app/base/readfile.py
/app/app.py
path中不能有fl4g,但是读取flag必定会吧上一级当成path,
发现vipfile和file一样存在格式化字符串漏洞,想到构造一个f绕过对fl4g的过滤,
payload:
flag:
flag{qoSF2nKvwoGRI7aJ}
Dooog
通读代码,看起来是个kerberos协议
核心就是伪造一个时间戳,绕过对cmd的验证
然后直接/readflag
exp:
GuessGame
http://121.37.179.47:8081/static/app.js 有后端源码
用ADmin888
大小写绕过admin的检查,
merge存在原型链污染,可以把config.enableReg改成true,
构造
然后可以控制进行一次正则匹配,因为没有任何回显,猜测是要redos进行延时盲注
exp:
我做这题的时候服务器一触发redos就挂,挂一台跑一位出来(运维大哥别打我
最后跑出结果g3tFLAaGEAxY
,拿了一血。
flag:flag{g3tFLAaGEAxY}
后来发现题目超时就断开了,更容易跑了。。
PHP-UAF
PHP 7.4.2,直接用现成exp打
https://github.com/mm0r1/exploits
happyvacation
http://159.138.4.209:1002/.git git泄露源码
审计代码发现答题的地方有个eval,answer参数有几个过滤,不能直接命令注入
但是看到this->user引入了上一层的$user,想到另外还有个上传点,于是构造
把uploader中的上传后缀黑名单清除,就能上传php文件了
最后直接读取/flag
所以提示里的bot是啥玩意?
自欺欺人md5验证码又是啥玩意?
后记
又是好久没有这么肝一场比赛了,最后拿了第二名,给队里的师傅们递茶!