• 20145324王嘉澜 《网络对抗》进阶实践之 shellcode注入和Return-to-libc攻击深入


    Shellcode注入

    •Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢出,覆盖成为指向 shellcode的地址
    实验参考

    •实践过程

    •生成shellcode(本次使用老师的shellcode)

    •运行编译

    •首先安装execstack这个指令

    •设置环境

    参数“2”表示开启,参数“0”表示关闭

    •构造要注入的payload
    •选择anything+retaddr+nops+shellcode的结构构造攻击buf,先猜测返回地址所在位置,并且找到shellcode所在地址

    •在终端注入这段攻击buf

    •再开另外一个终端,用gdb来调试shellcode5324这个进程


    •对foo函数进行反汇编

    •在ret处设置断点,接着继续运行到断点处,显示当前esp的值并依照此位置显示接下来的内存地址内容,来分析之前猜测的返回地址位置是否正确以及shellcode的地址



    •shellcode代码起始地址为0xffffd2fc,所以我们将返回地址改为0xffffd300

    •成功

    •实践知识总结

    •ps -ef | grep shellcode5324:
    查找与shellcode5324有关的进程,并用-ef格式显示出来
    •(gdb) attach: GDB可以对正在执行的程序进行调度,它允许开发人员中断程序并查看其状态,之后还能让这个程序正常地继续执行
    •(gdb) disassemble foo: 反汇编一段内存地址
    •(gdb) c: 继续执行被调试程序,直至下一个断点或程序结束,Continue的简写
    •chmod u+s 文件 :对文件设置强制位,即SET-UID,可以使非文件拥有者或文件所属群组的用户具有执行该文件的权限
    •echo : 在显示器上显示一段文字
    •gdb -q : -q用以使得gdb不输出gdb程序的版本等信息

    Return-to-libc攻击深入

    •缓冲区溢出的常用攻击方法是用 shellcode 的地址来覆盖漏洞程序的返回地址,使得漏洞程序去执行存放在栈中 shellcode。为了阻止这种类型的攻击,一些操作系统使得系统管理员具有使栈不可执行的能力。这样的话,一旦程序执行存放在栈中的 shellcode 就会崩溃,从而阻止了攻击。

    •不幸的是上面的保护方式并不是完全有效的,现在存在一种缓冲区溢出的变体攻击,叫做 return-to-libc 攻击。这种攻击不需要一个栈可以执行,甚至不需要一个 shellcode。取而代之的是我们让漏洞程序调转到现存的代码(比如已经载入内存的 libc 库中的 system()函数等)来实现我们的攻击。
    实验参考

    •实践过程

    •输入命令“linux32”进入 32 位 linux 环境。输入“/bin/bash”使用 bash
    •初始设置

    漏洞程序

    •编写retlib文件并进行编译,同时将其设为 Set-UID 程序


    •编写读取环境变量的程序并进行编译

    攻击程序

    •编写攻击代码

    •用刚才的 getenvaddr 程序获得 BIN_SH 地址

    •gdb 获得 system 和 exit 地址


    •修改 exploit.c 文件,填上刚才找到的内存地址

    •删除刚才调试编译的 exploit 程序和 badfile 文件,重新编译修改后的 exploit.c

    •先运行攻击程序 exploit,再运行漏洞程序 retlib,可见攻击成功,获得了 root 权限:


  • 相关阅读:
    Vue路由配置
    vue项目 favicon.ico不显示解决方案
    Vux使用AjaxPlugin发送请求跨域问题解决
    改变vux样式,自定义样式
    Hive LLAP
    GitHub提交代码无contributions记录解决办法
    Java websocket+ nginx+redis负载均衡上实现单对单通讯
    springboot异步接口
    C#中$的用法(转载)
    vmware-tools灰色而无法安装的问题
  • 原文地址:https://www.cnblogs.com/SJZGM10/p/6526737.html
Copyright © 2020-2023  润新知