今天主要学习gdb附加调试的方法,并以一个例子作为演示
场景描述
此节课,我们讨论的问题场景如下:在做PWN题时,完成调试分析后,开始着手写Exp,在写Exp时一般不会一次写成功,此时我们需要调试分析问题出在哪里。那么此时,我们可以在Exp中,设置一个暂停,随后,通过gdb附加调试我们的ELF分析对象,此时Exp发送Payload,在ELF程序接收到后,再分析Payload在程序的栈等数据结构中的部署情况,找出错误,完成最后的Exp。OK,上述就是我们今天研究问题的大致场景
开始
这节课我们研究的源码如下
//L9.c
#include <stdio.h>
void exploit()
{
system("/bin/sh");
}
void main()
{
char buf[20];
gets(buf);
}
使用如下编译命令
gcc -no-pie -fno-stack-protector -z execstack -m64 -o L9 L9.c
这里,没有开保护,有了前节课的基础,写出Exp应该不难
这里的Exp如下
from pwn import *
p=process("./L9")
print "pid"+str(proc.pidof(p)) #打印pid
offset=40
payload=offset*'a'