240 字
1 分钟
ctfshow stack overflow pwn45

这次我是真一点招都没了。先去看了看别人写的 wp。CTFshow-PWN-栈溢出(pwn45)

思路为利用 got 函数泄露 libc,然后从 libc 里拿 system 函数与 /bin/sh 字符串。
我记起来了!这才是最纯粹的 ret2libc!

main 函数里调用过了一次 puts 函数,所以这次使用的时候可以直接拿 got 表的地址,而不需要考虑延迟绑定机制。

第一次泄露的时候 puts_real 的地址没出来,因为我不很熟悉这里的回显逻辑。

exp:

在这里我第一个 payload 使用了 flat 函数而第二个 payload 没有使用,权当做一个对比,做一次尝试。当然,使用 cyclic 函数,不使用 b"A" * offsets 也是一种尝试。
本题我使用的是 puts 来泄露 libc 基址,而当然使用 write 函数也是 OK 的。方法见ctfshow pwn45。

ctfshow{b35732c3-b5aa-4d24-9461-5f773460c4ac}
ctfshow stack overflow pwn45
https://alf-ovo.cn/posts/ctfshow-stack-overflow-pwn45/