20145335郝昊《网络对抗》逆向及Bof基础实践

20145335郝昊《网络对抗》逆向及Bof基础实践

1.实践说明

  • 本次实践是对一个名为pwn1的可执行Linux文件进行操作。程序的执行流程是:主函数main调用foo函数,foo将函数其功能简单回显任何用户输入的字符串。

  • 程序包含另一个代码片段,getshell,会返回一个可用shell

  • 使用两种方法进行修改文件pwn1的代码:

     - 利用`foo`函数的`Bof`漏洞构造一个攻击输入字符串,覆盖返回地址,出发`getShell`函数。
    
     - 手工修改可执行文件,改变程序执行流程,直接跳转到`getShell`函数。

2.实践过程

  • 直接修改程序机器指令

    • 第一:首先确定文件pwn1是可以执行的。
      884698-20170301171433157-1175225700.png

    • 第二:用vi打开pwn1文件,会发现是乱码,使用命令%!xxd将乱码格式修改为16进制进行表示。
      884698-20170301171453470-384422250.png

    • 第三:使用命令/e8 d7查找到要修改的内容,使用i为键入模式,将d7修改为c3
      884698-20170301171512141-989057575.png
      884698-20170301171526876-1214404442.png

    • 第四:使用命令%!xxd -r还原为原格式,并使用命令:wq保存退出vi

    • 实践结果会得到:
      884698-20170301171630454-1125790574.png884698-20170301171650516-1631041200.png

  • 通过构造输入参数,造成BOF攻击,改变程序执行流。

    • 法现该可执行文件正常运行是调用如下函数foo,这个函数有Buffer overflow 漏洞。

           080484af <main>:
           80484af:   55                      push   %ebp
           80484b0:   89 e5                   mov    %esp,%ebp
           80484b2:   83 e4 f0                and    $0xfffffff0,%esp
           80484b5:   e8 d7 ff ff ff          call   8048491 <foo>

      上面的call调用foo,同时在堆栈上压上返回地址:80484ba

    • 确认输入字符串哪几个字符会覆盖到返回地址

      为了确定使用多少个字节才会使缓冲区溢出,这里使用暴力破解法,及一个一个字符添加直到出现Segmentation fault字样。
      884698-20170301171706782-1752635698.png

    • 使用GDB调试
      884698-20170301171720688-1038882292.png
      884698-20170301171731188-1723643190.png

    • 确认用什么值来覆盖返回地址

      getShell的内存地址是0804847d。

      接下来要确认下字节序(这里是低字节放在高位的大端法),简单说是输入20145335201453352014533520145335\x7d\x84\x04\x08。(前面32字节可以任意输入)
      884698-20170301171748923-2041603980.png

    - 构造书输入字符串
    
       然后将input的输入,通过管道符“|”,作为的输入。

884698-20170301171804376-1460553104.png

转载于:https://www.cnblogs.com/20145335hh/p/6485259.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值