[Pwnable] x64 Buffer Overflow
Wargame/HackCTF

[Pwnable] x64 Buffer Overflow

오늘은 x64 Buffer Overflow를 정리하겠습니다

 

제목부터 64비트에서 BOF를 터트리라는거 같군요👀

 

우선 Mitigation을 확인해보면

NX와 FULL RELRO가 걸려있습니다.

 

IDA로 까보겠습니다.

 

너무 짧은 코드라 굉장히 쉬운 문제이다.

 

맨처음 _isoc99_scanf로 변수 S에 입력을 받을텐데

Buffer Check를 해주지 않으니 BOF가 터질 것이다.

 

그럼 우리는 여기서 쉘을 띄울 수 있는 방법을

생각해야된다.

 

우선 Mitigation을 확인하였을때 NX bit가 걸려있어

쉘코드 삽입은 불가능 할 것이다.

 

ASLR은 걸려있지 않은거 같으니

RTL 기법으로 풀면 될거 같다.

 

공교롭게도 callMeMaybe라는 함수가 존재한다.

 

이 함수의 주소값으로 RET Overwrite를 진행하면 될거 같다.

 

바로 페이로드를 작성해봅시다👏

 

페이로드도 정말 간단합니다.

 

S의 Buffer을 Dummy 값으로 채워준 후 

RET Overwrite를 위해 SFP 역시 Dummy 값으로 채워줍니다.

 

그 후 RET 부분에 callMeMaybe 주소를 대입해줍니다.

 

그럼 FLAG가 뜨게 됩니다🙌

 

정말 기초 문제라 어려운 점은 없었지만

하나 주의 할 점은 Binary 파일이 64비트이기 때문에

 

여태까지 풀었던 32비트 문제들과는 달리 SFP의 크기가 8byte라는 것

 

또한 패킹을 해줄때 p32가 아닌 p64로 패킹을 해주는 것만

주의한다면 너무나도 쉬운 문제입니다

 

감사합니다🙇‍♀️

 

FLAG = HackCTF{64b17_b0f_15_51mpl3_700}

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

[Pwnable] Simple_Overflow_ver_2  (0) 2020.09.19
[Pwnable] x64 Simple_size_BOF  (0) 2020.09.19
[Pwnable] 내 버퍼가 흘러넘친다!!!  (0) 2020.09.15
[Pwnable] Basic_FSB  (0) 2020.09.06
[Pwnable] Basic_BOF #1 & Basic_BOF #2  (0) 2020.09.02