欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[分享]pwn姿势三 && 四

[分享]pwn姿势三 && 四

http://pwnable.kr/  bof && flag

bof

os: kali 64 &&win7 64
toos:gdb—peda插件  ida64 登陆pwbalble.kr 打开bof 根据英文提示:

Nana told me that buffer overflow is one of the most common software vulnerability.  Is that true?

根据提示可获得信息:此题可能跟缓冲区溢出有关:
此时进行查看源代码获取更多信息:bof。c

#include <stdio.h>  

#include <string.h>  

#include <stdlib.h>  

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.c中可以提取到的知识点: ####

  1. main()函数调用func() 函数传递参数 0xdeadbeef
  2. func()函数中包含对数组overflowsme【】 数组的输入 ,接下来就是if(key == 0xcafebabe) 判断是否读取flag文件
  3. 由此根据英文提示可以进行猜测就是,利用overflowme[]的溢出输入进行覆盖 key的值为 0xcafebabe进行正确的if判断读取flag文件

过程分析一

下载bof文件,直接拖进kali中 ,利用命令:file bof 查看文件为:

打开windows 7虚拟机,利用ida分析 bof如图:  

使用查看伪代码命令 F5: 此处伪代码对应的是main()函数  :
 
接下来双击func()函数来到func()函数内部:此处伪代码对应func()函数  
 

计算需要覆盖的字节数 ####

由此我们可以进行比较出来:a1的地址为 [ebp+8]  s的首地址是 【ebp- 2c】
因此  0x8 + 0x2c = 0x34 = 52d  因为栈区是从高向低生长的,所以此时想覆盖掉 key的值为0xcafebabe 就需要先进行覆盖前面的52个字节  下面通过调试bof文件进行验证此想法。

gdb调试bof

先执行objdump -d bof 进行查看反汇编代码:
 
重点位置已经标注,如相对地址 68a 和调用func()函数 69a等:
接下来进行gdb调试:如图  

上图中我们需关注寄存器EIP eax 关注stack的变化:  接下来利用命令 s 进入func函数:
 


上图中我们输入 aaaaaaaa的值 :  接下来查看栈区内存:

通过对栈区内存的查看我们很容易得到 overflowme首地址与 key 相差52字节。因此我们只需要进行key 值得覆盖即可完成正确读取flag文件

分析方法二

复制bof.c的代码进行在kali上进行 编译运行进行调试的时候会发现如下图的情形:

key和 overflowme的首地址相差48字节。这可能跟gcc的版本,操作系统内核等有关。

构造payload

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

 cat < (python -c (print " '\xbe\xba\xfe\ca'" * 14) - | nc pwnable.kr 9000) 使用cat的原因是:保持stdin opened
 

flag

打开后读取英文提示:Papa brought me a packed present! let's open it
根据提示flag文件可能为加壳程序:下载后直接拖进iad  利用命令  F12 + shift 查看字符串发现是:upx加壳
利用kali 命令行  upx -d flag进行脱壳。脱壳后进入ida进行分析  (直接F5 查看伪代码跟踪flag变量也会发现) 直接发现

flag = UPX...? sounds like a delivery service :)     

                                                                                                                                       

上传的附件 bof.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功