profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 3. 19. 21:40

1. 문제 의도 파악하기

ida로 문제 파일을 연 모습이다.

 

v5는 함수 포인터로, sup 함수의 메모리 주소가 담겨있다.

 

sup 함수는 s를 출력해 반환하는 함수이다.

 

그리고 gets 함수로 입력을 받아 버퍼 s에 저장하는데, 버퍼의 크기인 128 byte보다 큰 133만큼 입력을 받아 bof를 발생시킬 수 있을 것으로 보인다.

다만, 133byte 로는 RET까지 가지 못하므로 return address를 변경하는 것은 아닐 듯 싶다.

 

이때 함수들을 살펴보니 /bin/dash를 실행하는 shell 함수가 존재한다.

 

그래서 아마 버퍼 크기인 128만큼을 dummy 값으로 채우고, 그 뒤에 있는 v5에 shell의 주소를 넣으면 될 것으로 보인다. 즉, payload는 다음과 같을 것이다.

payload = "A"*128 + shell 함수의 시작주소(0x804849B)

 

 

2. payload 작성하기

위와 같은 논리로 payload를 작성해보았다.

 

성공적으로 쉘을 획득한 모습이다!

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

[HackCTF] x64 Simple_size_BOF  (0) 2021.03.19
[HackCTF] Basic_FSB  (0) 2021.03.19
[HackCTF] Basic_Bof - Simple_Overflow_ver_2  (0) 2021.03.13
[HackCTF] Basic_Bof - 내 버퍼가 흘러넘친다!!!  (0) 2021.03.11
[HackCTF] Basic_Bof #1  (0) 2021.03.04
복사했습니다!