wargame/HackCTF

[HackCTF] Basic_BOF #1 | write up

$1m0hYa 2019. 8. 29. 22:39

안녕하세요! 이번에는 HackCTF에 있는 basic_bof #1의 write up을 올려볼까 합니다.

 

처음(?) 라업인지, 되게 기대되네요!

 

그럼 바로 본론으로 넘어가겠습니다!

 

제목은 Basic_BOF

 

말하자면 기초적인 buffer overflow!

 

말그대로 버퍼가 넘친다 라고 보시면 되겠습니다!

 

bof 에 대한 자세한 내용은 나중에 다시 다루겠습니다.

 

자… 그럼 바이너리 분석을 할까요?

 

file을 이용해 표층분석을 해봤더니 32bit이고 리눅스 기반에다가 스트립되어있지 않습니다.

흠.. 보호기법은 NX랑 RELRO만 걸려있네요?

 

일단 우리가 신경써야 할건 NX부분이에요

 

즉, 셸코드를 사용할수가 없다는 것이죠

 

자 그럼 바로 ida를 이용해 분석해볼게요

 

흠.. 보니까

 

v5라는 변수가 0xDEADBEEF가 되면 /bin/dash를 실행 시킨다네요?

 

그러면 fgets(&s, 45, stdin); 부분에서

 

s에 0x34 에서 0xC 를 뺀 수만큼 다른값으로 채우고

 

v5의 변수가 시작되는 곳에 0xDEADBEEF를 넣으면 끝나는 문제네요!

 

(단위는 byte)

변수 s 의 크기 : 40

변수 v5의 크기 : 12

 

즉 40바이트를 아무값으로 채우고 그 다음값은 리틀앤디안으로 \xef\xbe\xad\xde로 입력해줍시다!

 

저의 코드는 이렇습니다!

 

1
2
3
4
5
6
7
8
from pwn import *
 
= remote(‘ctf.j0n9hyun.xyz’, 3000)
 
pay = ‘a’ * 40
pay += ‘\xEF\xBE\xAD\xDE’
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] 내 버퍼가 흘러넘친다!! | write up  (2) 2019.08.29
[HackCTF] Basic_BOF #2 | write up  (0) 2019.08.29