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 |