0ctf2018 blackhole writeup

题目链接

https://github.com/eternalsakura/ctf_pwn/blob/master/0ctf2018/blackhole.tar.gz

分析

这题和babystack是一样的,除了变成了64位,也是完全没有可以用来输出的函数。
而且,这题还设置了沙箱,限制了能够执行的系统调用为mprotect/read/write/exit。
所以说没办法getshell,只能一点一点的把flag给“注入”出来。

思路是先弄出一个syscall gadget,调一下mprotect,读进来shellcode就可以随便操作了。
sc逻辑的话,就把flag读进来,然后一个bit一个bit去爆破..
相当于sql盲注那样..可以构造个if flag[x]==’a’ sleep else exit..这样

另外,要想要调用系统调用,可以通过在got表地址里面写掉一个低Byte,从而可以可以跳转到附近的函数去,这里就是系统调用,如图。

利用

TODO
TODO
TODO
应该会写吧……嗯……