profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 4. 18. 20:27

1. 문제

보호기법 확인

NX bit 가 걸려있다.

 

ida 로 까본 모습이다.

 

1. "어떤 환경 변수를 읽고 싶니?" 멘트를 출력한다.

2. name 버퍼에 입력을 받는다.

3. getev() 함수를 통해 입력받은 환경변수의 값을 읽어온다.

 

 

있을 법한 환경 변수 이름을 입력하니 그 값으로 /bin/bash 값을 보여준다.

 

처음에는 환경 변수 문제인 줄 알고, 엄청 고민했었는데 아니었다!!

 

 

spawn_shell 이라는 함수가 존재하였다.

최종 목표는 spawn_shell 함수를 실행하는 것일 것이다.

그리고 앞에서 name 에 std cin 으로 입력을 받을 때 크기를 지정하지 않기에 bof 를 일으킬 수 있다.

따라서 ret 값을 spawn_shell() 시작 주소로 변경해주면 될 것 같다.

(spawn_shell 은 코드 영역에 존재하므로 ASLR의 영향을 받지 않음 -> 고정된 주소)

 

 

 

2. 익스플로잇

페이로드는 엄청 심플하다!

 

 

성공적으로 플래그를 획득하였다.

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

[HackCTF] Look at me  (0) 2021.04.19
[HackCTF] Random Key  (0) 2021.04.19
[HackCTF] Yes or no  (1) 2021.04.16
[HackCTF] poet  (0) 2021.04.16
[HackCTF] BOF_FIE  (0) 2021.04.15
복사했습니다!