当前位置: 首页 > news >正文

ret2syscall及mprotect的利用姿势

1 :ret2syscall

ret2syscall大概就是:通过在程序中寻找系统调用函数syscall代码等来构造出一个后门危险函数
Linux常用系统调用号

  • 32位系统下常用的有

    • execve(0xb)
    • read(0x3)
    • open(0x4)
    • write(0x5)
  • 64位系统下常用的有

    • execve(0x3b)
    • read(0x0)
    • open(0x1)
    • write(0x2)

在实现具体的攻击手法之前,我们要先了解系统调用的过程

  1. 首先用户态发起系统调用请求:用户程序通过编程语言提供的系统调用接口(如C语言中的库函数)发出系统调用请求,请求操作系统执行某种特定的操作。
  2. 权限检查:操作系统接收到用户程序的请求后,会进行权限检查,以确保用户程序有权限执行该系统调用。
  3. 切换到内核态:如果权限检查通过,操作系统会将用户程序的上下文切换到内核模式,以便执行操作系统提供的服务。
  4. 执行系统调用:操作系统执行用户程序请求的系统调用功能,这可能包括打开或关闭文件、创建或终止进程、进行内存管理等各种操作。
  5. 返回结果和错误处理:系统调用执行完毕后,操作系统会将执行结果返回给用户程序,并进行相应的错误处理,例如返回错误码或打印错误信息等。
  6. 切换回用户态:操作系统完成系统调用操作后,将会切换回用户态,继续执行用户程序的下一条指令。

一般在32位/64位下通过int 0x80/syscall ret(中断系统调用)来区分是否发起系统调用,系统调用号则利用在eax(32位)或rax(64位)寄存器中的序号

运行shell一般我们用execve("bin/sh",0,0)

注意32位下正常利用栈传递参数,而在系统调用中则根据ebx,ecx,edx,esi,edi的寄存器顺序通过寄存器传递参数!
64位则正常根据寄存器顺序:rdi,rsi,rdx,r10,r8,r9传递参数;

下面我们来研究攻击手法

  1. 首先通过file命令,查看是32位还是64位系统
  2. 接下来寻找pop eax/rax ;ret借此传递我们需要调用的系统调用号进而调用我们需要的函数
  3. 接下来寻找控制ebx;ecx;edx或rdi;rsi;rdx的gadget
  4. 最后通过执行execve("bin/sh",0,0)来getshell

如果没有现成的bin/sh字符串可以通过调用read函数往bss段去写入字符串后再调用execve

2:mprotect

mprotect函数主要用于修改内存权限为可读可写可执行来写入shellcode进而getshell
其函数原型为int mprotect(const void *start, size_t len, int prot)

  1. 第一个参数代表开始修改的地址注意必须是一个内存页(可通过在ida用ctrl+s查看段表)的起始地址(地址的最后三位数为000)
  2. 第二个参数代表修改的长度注意必须为页大小的整数倍(一般是4kb对应0x1000)
  3. 第三个参数是要赋予修改的权限(为7时即为可读可写可执行)

基于此我们就可以明白攻击方法

  1. 首先寻找mprotect函数的地址
  2. 寻找能写入的函数的地址(如read)
  3. 修改内存权限
  4. 写入shellcode
  5. 返回写入shellcode的地址从而getshell

http://www.jsqmd.com/news/120027/

相关文章:

  • C++按索引同时删除vector中的多个元素
  • 生成式视频技术商业化加速
  • 三星最新款手机推荐:Galaxy Z TriFold三折叠形态的体验革命
  • 用 .NET MAUI 10 + VS Copilot 从 0 开发一个签到 App(二)
  • 三折叠手机推荐哪个品牌?三星Galaxy Z TriFold用创新重新定义旗舰体验
  • 你的数据管家:访答本地知识库
  • 云底座管理与操作系统性能质量保证技术升华
  • TEST_40
  • 8个AI论文工具,MBA轻松搞定研究论文!
  • 三折叠手机有什么使用场景和优势?三星Galaxy Z TriFold给出答案
  • 5.string类型
  • 多角度关于人的本质的论述,你怎么思考?
  • 【学习笔记】后量子密码迁移科技研究
  • Spring AI Alibaba 深度解析(一):框架概述与核心功能
  • Thinkphp和Laravel水果购物商城vue
  • 利用AgentCore平台实现AI智能体的构建与部署
  • LLMs之Survey之Agent:《Measuring Agents in Production》翻译与解读
  • 大模型训练核心技术:优化器与分布式训练详解
  • 大模型训练核心技术:优化器与分布式训练详解
  • XMODEM协议解析
  • 当一部手机定价近两万:三星三折叠价格和功能如何匹配?
  • JVM性能调优案例-OOM案例
  • 灵遁者诗歌阅读:钨丝编年史
  • python作业4
  • 自建vs第三方:提示系统监控告警平台选型全攻略
  • 自建vs第三方:提示系统监控告警平台选型全攻略
  • 系统缺少hidserv.dll文件 丢失损坏问题 下载修复方法
  • 创建型设计模式学习笔记
  • CVE-2022-0779
  • CVE-2022-0779