2024SCTF的kno_puts,题目给了一个shell
类似的题目在202SUSCTF和2022的RCTF都有,本来是kernel提权题,但是由于权限配置问题出现劫持/sbin的非预期解,虽然这是非预期解但是也都已经好几次比赛可以用了,有点难绷。
ls看一下发现/bin/和/sbin目录所有者为1000,就是我们现在用的这个用户,其权限为7,这里题目环境的权限设置有问题,导致我们可以随意修改/bin和/sbin目录下的东西,这里注意到sbin下面有一个poweroff可执行文件:
这个程序是在linux系统关闭时会被调用的。
由于远程docker环境几乎都是会以init.sh启动,是以root权限启动的,因此最后会以root权限去执行poweroff,则我们只要劫持poweroff程序即可在linux机器退出时以root权限执行任意命令。
因此构造payload:
即可得到机器shell
然后这个shell是root权限的,我们直接cat拿flag即可。