PWN入门-ret2shellcode-1
什么是ret2shellcode
ret2shellcode就是自己调用shellcode注入到内存里,利用栈溢出的方式重新写入跳转地址,让进程跳转到shellcode的内存里面去
解题
本题出处为CTFHub技能数上的ret2shellcode checksec
发现是64位的程序
IDA
直接打开IDA-64进行查看
这里可以看到buf的真实大小只有两个字节,但是stdin可以读取0x400个字节到buf,可以考虑在此处进行栈溢出
这里可以看到buf到栈底的距离是0x10,在加上栈底寄存器rbp有8个字节,就可以算出我们只需要在(0x10 + 0x08)的地址上写入,就可以完成栈溢出
现在我们只需要把shellcode写入到栈上,在让它跳转到栈上执行就可以
运行程序
可以看到输出了一个栈上的buf的地址,可以根据此地址判断shellcode的偏移量
编写exp
执行python脚本
这是因为x86-64架构引入了一个新的指令syscall,int 80虽然可以用,但是可能会有兼容性问题,所以需要使用x86-68cpu指令集
修改脚本
再次执行python脚本
获取flag