CBCTF2024 WP
CBCTF2024 WP
Web
1.SignIn

主要是 get 传参 a、b,参数本身的值不等,md5 的结果强比较相等,结合提示的置顶帖子即可。
1 | |
得到答案。
2.Notes 1
一开始以为是路径穿越的题。
URL 尝试 /notes_read.php?file=note3.txt 时发现返回 Error: File not found : /var/www/html/note3.txt 也就得知访问的根目录在 /var/www/html/,通过 /notes_read.php?file=...
传参读取该目录下的文件,因此访问 URL /notes_read.php?file=notes_read.php 就可以看到 notes_read.php 的源码。

读完代码发现对于参数 $file 存在正则匹配,且实际读取文件的路径 $filePath 由 $notes_directory 和 $file 拼接而成,无法直接获取 /flag。而后发现 extract() 存在变量覆盖漏洞,所以传参 /notes_read.php?file=flag¬es_directory=/ 将变量 $notes_directory 的原内容覆盖,再拼接后即为/flag 路径,读取到 flag。
3.Notes 2
未完成
已有思路是反序列化后 _0rays 类下的 __wakeup() 先自动调用,而后 __toString(),__set($a, $b),__get($c),__invoke(),__construct($filepath),最终 readfile($filepath); 获取 flag
但是实践起来还不熟练,没有做完。

后记
阳光长跑
补做了阳光长跑一题,主要考点是前后端的通信交互,用BP抓包发现开始跑步后浏览器向后端发送位置(经纬度)信息,推测后端根据位置信息的变化距离判断跑步长度,跑步时长由后端计算后返回,不受前端影响。
所以通过BP改变位置信息使距离达到要求然后再等时长到达合适的时间即可。
Notes 2
该题为基础 PHP 反序列化,思路同上所述,具体参考我的另一篇博文PHP反序列化小结