0x01 IDA

将pwn2文件拖入IDA反编译,查看main函数,可以很明显的看出考点是栈溢出。同时还发现了getshell()函数,所以思路就是栈溢出覆盖EIP为 getshell()函数入口地址。
0.png

1.png


0x02 gdb

首先查看一下二进制文件的保护机制,发现没有开启任何一项,并且知道该程序是64位。
2.png

接下来我们就要判断EIP相对于变量偏移,这里使用pattern程序实现。
3.png

4.png

5.png

可以知道RBP相对偏移48个字节,RBP占8个字节,所以EIP相对偏移56个字节。

运行p get_shell_指令获得该函数入口地址。
6.png


0x03 exp

所以编写exp如下:
7.png

运行得到flag
8.png