BUU-picoctf_2018_shellcode-WP

Posted on Nov 21, 2020

这道题的源程序有700多K,看起来非常大,但是打开之后发现实际上只有两个函数是有用的,即main和vuln。 但是由于不明原因(也许是函数太多?),无法反编译,我们就只能干看汇编了。

三段分别出现在main,vuln和vuln的栈空间中,由调用约定,我们知道vuln函数有一个参数,此参数就是var_A0的地址

那么这里的gets就是向var_A0读入数据了。

然后还有非常不同寻常的两行语句

这里帮我们实现了ret2reg这种rop,而执行的地址正是var_A0

源程序也没有NX,所以我们直接写入shellcode就行了。

于是有exp

这道题其实非常简单,就是看汇编功底了。