前言

打了个西湖论剑的比赛,虽然他的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


CTF Web

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

JavaScript原型链污染
SVG XSS-CDN-Web缓存投毒