• 20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行


    20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行

    实验原理

    • 关于ShellCode:ShellCode是一段代码,作为数据发送给受攻击服务器,是溢出程序和蠕虫病毒的核心,一般可以获取权限。我们将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出漏洞,覆盖成为指向ShellCode的地址。

    • Linux中两种基本构造攻击buf:retaddr+nop+shellcodenop+shellcode+retaddr,缓冲区小就把shellcode放后面,若缓冲区较大把缓冲区放置前边。

    实验目的与要求

    • 本次实践对象是一个名为pwn1的可执行文件。

    • 对可执行文件pwn1进行操作,注入并运行任意代码。

    实验过程及结果

    • 写一段shellcode代码(本次实验采用老师的代码)
    • 设置环境,手动安装execstack
    • 拷贝并运行pwn1文件确保可以使用

    • 设置堆栈可执行
    • 关闭地址随机化,more/proc/sys/kernel/randomizevaspace用来查询地址随机化是否开启或者关闭的状态,2表示开启,0表示关闭。

    • 构造payload,采用nop+shellcode+retaddr方式(x4x3x2x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)

    • 打开一个新的terminal,注入攻击注入攻击buf(注意回车要在设置断点后进行,否则无法确认进程号,并且要在gdb执行c前回车

    -用GDB调试20145335hh1进程,找到进程3400,用attach追踪

    • 启动gdb调试进程,设置断点,查看注入 buf的内存地址

    • 此时发现0x080484ae ret 就跳到我们覆盖的retaddr那个地方了

    • 设置断点后,在另一个终端按下回车,并寻找返回地址,看到01020304表示返回地址的位置是0xffffd31c,shellcode就紧挨着这个地址,加四字节为0xffffd320

    • 退出gdb,按照anything+retaddr+nops+shellcode修改input_shellcode如下打印字母'H',完成实验。

    心得体会

    本次实验老师在课堂上也有讲到过,但是在自己实验过程中还是遇到问题,比如在最后一步输入命令的时候遇到了问题,在命令perl -e 'print "H" x 32;print "x20xd3xffxffx90x90x90x90x90x90x31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80x90x00xd3xffxffx00"' > input_shellcode和命令(cat input_shellcode;cat) | ./20145335hh1时候两个shellcode输入错误,导致修改的是一段代码,注入又是另一段代码导致最后结果出现了问题,及时更正了过来完成了实验

  • 相关阅读:
    mvc 注册脚本的其他方法
    如何将html代码转换为Xml并生成Dom树
    用TFIDF值来判断词的重要性
    oem key
    vs2010 下的ado.net 实体模型创建数据库时datetime 类型的问题
    asp.net mvc 动态注册脚本
    ASP.NET 中如何对生成的 HTML 内容流进行控制
    C# 子窗体调用父窗体的方法
    layui 弹出新页面
    winform excel导入进度条
  • 原文地址:https://www.cnblogs.com/20145335hh/p/6539368.html
Copyright © 2020-2023  润新知