当前位置: 首页 > 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.rkmt.cn/news/132095.html

相关文章:

  • Thinkphp和Laravel水果购物商城vue
  • 当一部手机定价近两万:三星三折叠价格和功能如何匹配?
  • JVM性能调优案例-OOM案例
  • CVE-2022-0779
  • CVE-2022-0779
  • DaemonSet service ingress的 - 教程
  • 用 .NET MAUI 10 + VS Copilot 从 0 开发一个签到 App(一)
  • 人工智能AGI
  • 一文读懂大模型微调:从全参数到LoRA,打造你的专属AI专家
  • 为什么食管癌发现都是晚期--转自杭州日报
  • 2026行业展望——大模型,非常详细收藏这一篇就够了
  • 企业级知识库架构图解:从“玩具“到“工具“的蜕变之路,解决大模型上下文坍塌问题
  • 基于YOLOv10的花生种子霉变检测系统(YOLOv10深度学习+YOLO数据集+UI界面+Python项目+模型)
  • 用FastAPI构建爬虫接口服务:让爬虫变成可调用的API - 详解
  • 今天教大家免费使用先进的AI大模型,非常详细收藏这一篇就够了
  • 好写作AI:当免费的GPT都能写论文,你为什么还需要专业工具?
  • 好写作AI:当所有AI写作工具都长一样,你的选择困难症犯了吗?
  • 投稿?别怕!宏智树AI的期刊“外挂”功能,给学术新手的进阶指南
  • 【BuildFlow 筑流】unitrix_macros库 Cargo.toml 配置详解及依赖库用法
  • 一张蓝图胜过一万行填鸭:为何顶尖AI把开题报告“活”成了你的开题战略家?
  • python:报错:ModuleNotFoundError: No module named langchain_community
  • “你用的那个AI,到底把你坑了还是救了?”——解锁宏智树论文的协作新范式
  • 系统文件gdi32.dll缺失或损坏 免费下载修复方法
  • 拒绝品牌碰瓷!如何通过影刀RPA为品牌IP搭建一套高效的“内容合规治理”工作流?
  • fontext.dll文件缺失或损坏问题 下载修复方法
  • 国际清爽版,比国内版好用太多了!
  • 三折叠手机有什么使用场景和优势?三星Galaxy Z TriFold的全能进化
  • 控件的Invoke 方法、BeginInvoke 方法、InvokeAsync 方法
  • Windows系统文件fwbase.dll丢失损坏问题 下载修复
  • 研究生必备8款AI写论文神器:5分钟生成25000字问卷类论文,自动生成高信度数据