티스토리 뷰

포너블/FTZ

FTZ level16풀이

삼전동해커 2020. 8. 17. 14:41

level 16을 풀어보장.


힌트를 먼저 보면



함수가 3개나 있다.


1.권한을 상승시켜주는 shell함수

2. hello there을 출력하는 printit함수

3. main문.

main문은 int형 crap변수가 있고, call변수를 포인터 함수로 선언해 printit함수를 담았다.

call함수를 실행하면 printit함수가 호출된다.

buf 배열20byte를 선언하고 fgets함수를 사용해 48byte까지 입력을 받고,

마지막에 call함수를 호출한다.


문제는 간단하다. printit대신 shell함수를 호출하면 권한이 상승된다.


그럼 call함수의 위치를 알아내고 shell의 위치를 알아내 call위치에 넣어주면 되겠다.



main문을 살펴보자.


main+3에서 0x38만큼,56byte만큼 스택을 확장하고,

main+6에서 ebp-16에 0x8048500을 옮겨줬다.

왠지 이게 call포인터함수 선언인 것 같다.

그럼 ebp-16이 call함수의 위치이고 0x8048500이 printit함수의 위치이겠지?

printit함수의 위치를 찾아보자.



내생각이 맞았다.


그럼 shell함수의 위치는?


0x080484d0이다.

ebp-16위치에 이걸 넣어주면 되겠다.


그럼 익스플로잇은



이렇게 실행하면 되겠다.



'포너블 > FTZ' 카테고리의 다른 글

FTZ level18풀이  (0) 2020.08.18
FTZ level17 풀이  (0) 2020.08.17
FTZ level15풀이  (0) 2020.08.17
FTZ level14 풀이  (0) 2020.08.17
FTZ level 12풀이  (0) 2020.08.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함