티스토리 뷰

포너블/FTZ

FTZ level14 풀이

삼전동해커 2020. 8. 17. 12:15

level14를 풀어보장.


포너블도 진입장벽이 높지만 장벽이 허물어졌을 때 쾌감은 역시 너무 좋당.

아직 ftz정도의 레벨 밖에 못풀었지만 그래도 내 힘으로 풀었다.


힌트를 보장.





변수가 3개 있다. crap, check, buf.

int형은 4byte니까 4+4+20 총 28byte만큼 필요하겠지?

그리고 fgets로 45길이만큼 입력받아 buf에 저장한다.

이전에 쓰던 gets는 길이를 체크하지 않았지만 fgets는 받는 길이를 체크한다.

미리 말해보자면 fgets때문에 ret조작은 불가능하다.


하지만 if 조건에서 check값이 0xdeadbeef면 권한상승이 되니 ret조작은 필요없다.



main+3에서 0x38만큼, 56만큼 스택이 확장되었다. 다음으로 main+6에서 4만큼 또 확장되어서 60 byte만큼 스택이 확장되었다.


그리고 main+17에서 ebp-56의 값을 eax에 복사했다. 즉, ebp-56에 buf가 위치해 있다.

check의 위치는 main+29에서 알려주고 있다.

cmpl 명령어로 0xdeadbeef와 ebp-16을 비교하고 있다.

즉 ebp-16이 check의 위치라는 것이다.


그럼 입력이 시작되는 buf위치부터 check까지의 거리는 40byte만큼이니까 40만큼 \x90으로 채워준뒤, \xdeadbee를 넣어주면 되겠다.





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

FTZ level17 풀이  (0) 2020.08.17
FTZ level16풀이  (0) 2020.08.17
FTZ level15풀이  (0) 2020.08.17
FTZ level 12풀이  (0) 2020.08.14
FTZ level11풀이  (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
글 보관함