profile image

L o a d i n g . . .

article thumbnail image
Published 2021. 4. 15. 16:11

1. 문제

보호기법 확인

NX, pie 가 걸려있다.

 

ida를 통해 까본 모습이다.

welcome() 함수를 실행하고, puts 를 통해 멘트를 출력한다.

 

 

welcome() 함수의 모습

welcome() 함수의 실제 주소를 leak 하고, scanf 를 통해 입력을 받는다.

입력을 받을 때 입력값을 검증하지 않아 bof 가 발생한다.

 

 

j0n9hyun() 이라는 함수를 발견했다.

flag 를 보여주는 함수로, 이 함수를 실행시키는 것이 최종 목표일 것이다.

 

예상되는 시나리오는 다음과 같다.

1. bof 를 통해 ret 를 j0n9hyun() 주소로 바꿔주면 된다.

2. 이때, pie 가 걸려있기에 pie_base 주소를 구해야 할 것이다.

3. welcome 주소를 통해 pie_base 주소를 얻으면 될 것이다.

 

 

2. 문제 해결 과정

 

welcome() 함수의 일부분

 

v1 : ebp-0x12

0x12 = 18

offset = 18 + 4

 

 

welcome() 과 j0n9hyun() 의 offset

 

따라서 payload 는 다음과 같을 것이다.

"A"*22 + (pie_base+0x890)

 

 

3. 익스플로잇

 

위의 논리대로 페이로드를 작성해보았다.

 

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

 

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

[HackCTF] Yes or no  (1) 2021.04.16
[HackCTF] poet  (0) 2021.04.16
[HackCTF] Offset  (0) 2021.04.15
[HackCTF] RTL_Core  (0) 2021.03.31
[HackCTF] RTL_World  (0) 2021.03.20
복사했습니다!