0x01 IDA
将pwn2文件拖入IDA反编译,查看main函数,可以很明显的看出考点是栈溢出。同时还发现了getshell()函数,所以思路就是栈溢出覆盖EIP为 getshell()函数入口地址。
0x02 gdb
首先查看一下二进制文件的保护机制,发现没有开启任何一项,并且知道该程序是64位。
接下来我们就要判断EIP相对于变量偏移,这里使用pattern程序实现。
可以知道RBP相对偏移48个字节,RBP占8个字节,所以EIP相对偏移56个字节。
运行p get_shell_
指令获得该函数入口地址。
0x03 exp
所以编写exp如下:
运行得到flag