본문 바로가기

코딩 문제/해커스쿨

FTZ : level15

728x90

hint를 확인한다.

level14와 비슷하지만 int *check를 사용하고 있다.

즉 check 포인터를 이용하여 비교하는 것이다.

그럼 어딘가에 0xdeadbeef가 있을 것이다.

 

GDB를 이용하여 살펴보자.

먼저 buf의 위치는 main+17로 인해 0xffffffc8이라는 것을 알 수 있다

( level14풀이에 이유 나와있음 )

그리고 main+29로 인해 0xfffffff0이 *check의 위치라는 것을 알 수 있다.

그렇다면 buf와 *check 사이에는 40byte의 공간이 있다는 것도 알 수 있다.

 

main+32를 보면 0xdeadbeef와 %eax를 비교하는 부분이 나온다.

그럼 main+32의 메모리 값을 확인해 보자.

예상대로 deadbeef가 있다.

그럼 어느 주소가 deadbeef 값을 가지는 지 확인해 보자.

0x80484b2의 주소가 deadbeef의 값을 가지는 것을 확인하였다.

 

그럼 이제 40개의 NOP를 준 다음 deadbeef 값을 가지는 주소 4byte를

입력값으로 줄 것이다.

id를 확인해보니 level16의 권한을 얻었다.

my-pass 명령을 통해 Password를 얻자.

'코딩 문제 > 해커스쿨' 카테고리의 다른 글

FTZ : level17  (0) 2019.07.19
FTZ : level16  (0) 2019.07.14
FTZ : level14  (0) 2019.07.13
FTZ : level13  (0) 2019.07.08
FTZ : level12  (0) 2019.07.07