BUUCTF PWN rip1 WP

BUUCTF   PWN   rip 1

这是一个WP,也是一个自己练习过程的记录。

  • 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题

BUUCTF PWN rip1 WP

 

我们运行一下试试,它让你输入一段字符然后将字符输出。

  • 把文件放在ida中查看一下

发现main函数并不复杂,只是定义了一个 s ,而且我们很容易就能找到栈溢出的点,我们都知道gets函数是一个危险函数,对于我们来说它可以接受到无限的字符,所以这里就是我们要pwn掉的点。

BUUCTF PWN rip1 WP

 

我们双击 s ,看它有多少空间

BUUCTF PWN rip1 WP

 

从图中不难看出 s 有15个字节的空间

与此同时,我在main函数的下面发现了一个可疑的函数,fun函数。双击打开它

BUUCTF PWN rip1 WP

 

果然,它的返回地址是/bin/sh,也是我们想要的地址。并且我们可以得到fun的起始地址。

  • 编写脚本

有了以上的地址我们就可以编写脚本来pwn掉这个程序拿到flag了

我们先用15个A来填充S,然后用8个a来填充rbp(因为是64位文件,如果是32位就用4个字符填充ebp),最后加上fun函数的起始地址。

BUUCTF PWN rip1 WP

 

至于这里要+1是为了堆栈平衡,想要详细了解可以学习大佬的文章http://blog.eonew.cn/archives/958 (这个是在别人的wp中找到的)

//  这里为什么+1我也还在学习,当我在网上找了一段时间后,发现与我的脚本相似的都加了1,所以我也加了1,然后脚本就通了。

我们运行脚本试一试

BUUCTF PWN rip1 WP

 BUUCTF PWN rip1 WP

 

OK,成功拿到flag!

  • 总结

这虽然只是一道最基本最简单的题,但是其中包含的知识却不少,对于我这个pwn新手来说也是有一点的挑战性。

为了提高自己的水平,在这里立一个flag

每天解一道PWN题,或者学俩小时PWN课。

 

上一篇:pwn环境配置


下一篇:pwn-这里等学完堆再来记详细笔记