前言
打了个西湖论剑的比赛,虽然他的Web题出得很没有质量,虽然最有质量的一题还是抄的GoogleCTF,但毕竟还是有点东西的,所以还是写篇博客总结一下。
因为主办方的比赛结束的一刹那就关掉了环境(这也太难受了吧),所以我就只讲一下主要思路了。
Web1
出题人犯错把strpos函数的参数写反了的题目,先通过index.php读取源码,看到index.php有提示dir.php,然后用dir.php列目录,最后直接读取根目录的flag即可。
Web2
- 在main.php页面写xss,过滤可以在onerror和=之间加个换行符来绕过
- 在report.php提交main.php的URL
- 在自己的xss平台接收cookie
- 换掉自己的cookie,访问exec.php
- 通过测试curl发现可以执行系统命令,直接反弹shell
- 在根目录找到flag
Web3
脑洞/Misc题目。
- 扫目录得到.DS_Store,看到目录e10adc3949ba59abbe56e057f20f883e
- 再次扫目录,发现.git泄露
- 下载得到一个压缩包、一张图片和一个PHP
- 发现压缩包里面有三个文件,相同的图片和PHP,以及一个hint
- 将图片压缩成一个ZIP(坑,要使用2345进行压缩),进行ZIP明文攻击,得到解密后的hint
- hint给了code和下一步的提示
- 向index.php GET提交code,得到一个时间戳
- 用php_mt_seed进行爆破,得到seed,访问/flag/seed.txt,得到flag
Web4
源码地址:https://github.com/google/google-ctf/tree/master/2018/quals/web-bbs
writeup:
https://blog.dragonsector.pl/2018/07/google-ctf-2018-quals-bbs.html
https://ctftime.org/writeup/10369
思路:
- 因为其他输入点都被编码的缘故,所以只能将Javascript代码插入PNG图片中上传,制作恶意PNG图片的脚本可以在writeup中找到。
- ajax参数污染,让管理员加载恶意PNG图片指定位置的代码作为Javascript来执行,漏洞代码:
function load_post() {
var q = qs.parse(location.search, {ignoreQueryPrefix: true});
var url = q.p;
$.ajax(url).then((text) => {
$('#post').html(atob(text));
});
}
Orz