逛ctftime发现一个比赛连着开两个月,没事就打打,做不出来算了。另外,这个比赛的靶场竟然不是需要自己开启的容器,好神奇啊
1. All Paths Lead Home
这个签到题挺搞心态的。
进来看到一个读取文件的页面,默认的note.txt内容如下:
Welcome traveler.
Only text files are available here.
题目描述提示flag在/secret/下面,直接路径穿越,发现 ..和/被ban了。
随便输入点东西给出hint
This path doesn’t exist. If you’re experimenting with encodings, consult the docs.
Hint: legacy compatibility is documented at /docs/legacy.html.
跟进去看看
其实知道这个编码这个题就写出来了,就是get传参启动传统模式,然后换编码绕过黑名单,路径穿越读flag。
具体的绕过就是:
|
|
但是我做路径穿越的时候一直都习惯往上爬4,5层,感觉到顶了就都一样,结果一直读不到 /secret/flag.txt ,想了很多方向,试了一堆payload,结果最后
%2BAC4-%2BAC4-%2BAC8-secret%2BAC8-flag%2BAC4-txt成功了,就 ../secret/flag.txt 往上爬了一层。
后来ai告诉我说:
当输入(例如 ../../../../flag)被发送到服务器时,应用程序会先进行“规范化”处理,计算出最终的绝对路径。 许多安全的应用程序会检查这个最终路径是否在允许的Web根目录之内。
应用程序的安全检查发现路径已经超出了预期的Web目录(例如 /var/www/),会直接拒绝请求。
HaHa, What can I say
2. This Must Be the Place
这个题干说filters are not enough,我想你要是挡完了我还做什么,然后fuzz了一下发现对很多字符都有反应,想了半天绕过方法结果
<script> alert(1); </script>直接成功了,仔细看代码把输入框给转了,我只能说这个出题人挺有活的。
然后直接fetch会404,结合hint,在payload中附带上tocken,因为这个tocken是在利用点之后生成的,所以需要setTimeout等一下。
小北计算器还在追我tmd 😡

完整payload:
|
|