跳到主要内容

「PWN」【西湖论剑2022】Writeup WP 复现

· 阅读需 2 分钟
Muel - Nova

附件仓库

坐大牢比赛 +1

吃饭前写的,剩下的还没复现

babycalc

image-20230203174540289

首先要绕过这个解密。可以用 Z3 Prover 求解(那么有没有人是手算的呢,哈哈,原来是我啊)

在这里,可以注意到 buf 能够溢出修改 i 的值,从而修改一个字节的值。同时,buf[(int)read] 这里,填满 0x100 字节也可以将 rbp 的最高位覆写为 0。

因此,我们可以修改返回地址最后一字节从而返回到另一个 leave; ret,配合上修改的最后一字节来形成栈迁移。

因为迁移的地址是不确定的,我们可以填充 ret 的地址作为 slide code,增加成功率(就和 shellcode 填充 \x90 一样的效果)

第一次利用 puts 泄露 libc,第二次打 one_gadget 或者返回 system 都可以。

写 exp 的时候还写挺复杂。

exp

jit

Loading Comments...