티스토리 뷰





Hackerschool FTZ의 Level 13 풀이입니다.






버퍼 오버플로우를 일으켜야 하는데 i 값을 보존시키면서 쉘코드를 삽입해야 할 것 같습니다,





main 함수를 분석해보니 변수 i의 값을 보존시켜야만 한다는 것만 제외하면, 기존의 문제와 같게 strcpy 함수를 이용해서 버퍼 오버플로우 공격을 해야 하네요.


입력받은 값을 0xfffffbe8부터 붙였는데 0xfffffff4가 변수 i 값입니다.


0xfffffff4 - 0xfffffbe8 = 1036


그러므로 1036개의 값 뒤에 변수 i의 값을 넣고 ebp-4 까지 덮어 씌어주기 위해 12byte를 더 쓰고 RET과 더미 크기만큼인 4byte, 그리고 공격 코드를 넣어주는 방식으로 쉘코드를 작성하면 될 것 같습니다.





변수 i 값과 버퍼값을 비교하는 곳에 BP를 걸고 문자를 1024개 입력했더니 SFP = 0xbfffe5f8, RET = 0x42015574라는 것을 알 수 있었습니다.





gdb에서 system 함수의 주소를 구한 뒤 system 함수에서 사용하는 /bin/sh 문자열 주소를 구하는 코드를 짰습니다.


이제 위에서 말한 대로 공격 코드를 작성해서 입력해주면..





Password : what that nigga want?





'Pwnable > Hackerschool' 카테고리의 다른 글

[Hackerschool FTZ] Level 15 풀이  (0) 2018.10.04
[Hackerschool FTZ] Level 14 풀이  (0) 2018.10.03
[Hackerschool FTZ] Level 12 풀이  (0) 2018.05.09
[Hackerschool FTZ] Level 11 풀이  (0) 2018.04.16
[Hackerschool FTZ] Level 10 풀이  (0) 2018.03.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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
글 보관함