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

1.实践说明

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

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

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

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

2.实践过程

  • 直接修改程序机器指令

    • 第一:首先确定文件pwn1是可以执行的。

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

    • 第三:使用命令/e8 d7查找到要修改的内容,使用i为键入模式,将d7修改为c3



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

    • 实践结果会得到:

  • 通过构造输入参数,造成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字样。

    • 使用GDB调试



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

      getShell的内存地址是0804847d。

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

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

20145335郝昊《网络对抗》逆向及Bof基础实践的更多相关文章

  1. 网络对抗实验一 逆向及Bof基础实践

    网络对抗实验一 逆向及Bof基础实践 一.实验目的 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. ...

  2. 20145308 《网络对抗》 逆向及BOF基础实践 学习总结

    20145308 <网络对抗> 逆向及BOF基础实践 学习总结 实践目的 通过两种方法,实现程序能够运行原本并不会被运行的代码 实践原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串 ...

  3. 20145206邹京儒《网络对抗》逆向及Bof基础实践

    20145206邹京儒<网络对抗>逆向及Bof基础实践 1 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:ma ...

  4. 20145216《网络对抗》逆向及BOF基础实践

    20145216<网络对抗>逆向及BOF基础实践 1 逆向及Bof基础实践说明 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函 ...

  5. 20145327 《网络对抗》逆向及BOF基础实践

    20145327 <网络对抗>逆向及BOF基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

  6. 20145204《网络对抗》逆向及bof基础实践

    20145204<网络对抗>逆向及bof基础实践 实践目的说明 实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...

  7. 20145208蔡野 《网络对抗》逆向及BOF基础实践

    20145208蔡野 <网络对抗>逆向及BOF基础实践 逆向及Bof基础实践 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函 ...

  8. 《网络对抗》——逆向及Bof基础实践

    <网络对抗>--逆向及Bof基础实践 原理 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数. 手工修改可执行文件,改变程序执行流程,直接跳转到g ...

  9. 20145302张薇 《网络对抗技术》逆向及BOF基础实践

    20145302张薇 <网络对抗技术>逆向及BOF基础实践 实验内容 实践对象:名为20145302的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单 ...

随机推荐

  1. c++ 函数返回研究[转]

    一,c++函数的返回分为以下几种情况 1)主函数main的返回值:这里提及一点,返回0表示程序运行成功. 2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象.用函数返回值初始化临时对 ...

  2. shell中特殊变量$0 $1 $# $$ $! $?的涵义

    $0: 执行脚本的名字 $*和$@: 将所有参数返回 $#: 参数的个数 $_: 代表上一个命令的最后一个参数 $$: 代表所在命令的PID $!: 代表最后执行的后台命令的PID $?: 代表上一个 ...

  3. Windows Phone WebClient的使用

    webClient对象可用来下载XML文件,程序集等这些数据,其可以实现按需下载,所以还是有必要了解的.其主要包含几个事件:                                       ...

  4. R向量匹配match和pmatch

    match(x, table, nomatch = NA_integer_, incomparables = NULL) x: 向量, 要匹配的值; table: 向量, 被匹配的值; nomatch ...

  5. Comparable 与 Comparator的区别

    Comparable & Comparator 都是用来实现集合中元素的比较.排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序 ...

  6. windows dos 常用命令行

    有关某个命令的详细信息,请键入 HELP 命令名 dir (directory) :列出当前目录下的文件以及文件夹 md (make directory): 创建目录 rd (remove direc ...

  7. 170508、忘记jenkins密码或者修改jenkins密码

    刚配置好jenkins时,不知道密码是什么,很多同学都有这种烦恼把,各种抓狂. 操作步骤: 1.进入jenkins用户目录  cd /home/rick/.jenkins/users/admin ps ...

  8. Zabbix邮件告警提示Couldn't resolve host name解决办法

    zabbix设置好邮件告警,当有触发时邮件未发送 查看zabbix server日志,提示不能连接邮件发送服务器,但是ping是可以通的

  9. pta 习题集5-19 列车厢调度

    1 ====== <--移动方向 / 3 ===== \ 2 ====== -->移动方向 大家或许在某些数据结构教材上见到过"列车厢调度问题"(当然没见过也不要紧). ...

  10. 终于修好了MacBook

    之前由于Trackpad故障,陆家嘴苹果店开了维修单,让我在2周内去更换,详见第二次去苹果店维修MacBook. 后来由于购买了AppleCare进行延保,又担心放在那维修时间长,就懒得去更换了. 昨 ...