zoukankan      html  css  js  c++  java
  • 2015531 网络攻防 Exp1 PC平台逆向破解(5)M

    2015531 网络攻防 Exp1 PC平台逆向破解(5)M

    实践目标

    本次实践的对象是linux的可执行文件

    该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串

    该程序同时包含另一个代码片段,getShell,会返回一个可用Shell。正常情况下这个代码是不会被运行的。我们实践的目标就是想办法运行这个代码片段。我们将学习两种方法运行这个代码片段,然后学习如何注入运行任何Shellcode

    实践一

    首先,通过命令objdump -d pwn1对文件进行反汇编

    然后通过命令vi pwn1编辑文件

    通过命令:%! xxd把文件转为十六进制编辑模式

    通过命令/d7ff找到需要修改的地方,最后输入i进入编辑模式,即把d7为c3

    改完后输入命令:%! xxd -r将文件转回至二进制形式,再输入:wq保存并退出

    此时我们可以看到程序已从原来跳转至foo函数变为跳转至getshell函数

    实践二

    通过命令gdb pwn2进行调试,通过命令r进行运行,通过命令info r可查看各寄存器的值,其中主要关注EIP寄存器的值

    由可知此1234这四个数最终会覆盖到堆栈上的返回地址,进而CPU会尝试运行这个位置的代码。因此只要把这四个字符替换为getShell的内存地址,输给pwn1,pwn1就会运行getShell

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

    getShell的内存地址,通过反汇编时可以看到,即0804847d。

    对比之前EIP寄存器显示的值0x34333231,此处应输入11111111222222223333333344444444x7dx84x04x08

    实践三

    输入命令execstack -s pwn1设置堆栈可执行

    输入攻击命令(cat input_shellcode;cat) | ./pwn3

    找到进程号:4703

    输入gdb进行调试

  • 相关阅读:
    day12-html(css)
    day-12- 前端 html
    python-day11 pymysql
    day11-mysql 练习题
    python-day11 Mysql 数据类操作
    python-day11 Mysql 数据类型
    python-day11-MYSQL 数据库及数据表
    最简单的checkbox, radio跟文字在一行
    前端压缩
    table td 设置宽高无效的问题
  • 原文地址:https://www.cnblogs.com/dd1174751354/p/8597515.html
Copyright © 2011-2022 走看看