20145225 《网络对抗》逆向及Bof基础实践

实践目标

  • 本次实践的对象是一个名为pwn1的linux可执行文件。
  • 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串。
  • 该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。
  • 本次实践主要是学习两种方法:
    • 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。
    • 手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。
  • 现实情况中的攻击目标:
    • 运行原本不可访问的代码片段
    • 强行修改程序执行流
    • 以及注入运行任意代码。

实践过程

直接修改程序机器指令,改变程序执行流程

1.备份

2.修改可执行文件

(d8>>c3)

3.反汇编看一下,call指令是否正确调用getShell

4.运行下改后的代码,会得到shell提示符#

 

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

1.构造输入字符串

2.将input的输入,通过管道符“|”,作为pwn1的输入

原文地址:https://www.cnblogs.com/nizaikanwoma/p/6507256.html