본문 바로가기
Hack/ftz

ftz 풀이 level16

by Choraengyi 2017. 1. 6.
728x90

 ftz level16 풀어보겠습니다.


힌트조회 입니다.



 이번에는 쉘을 획득할 수 있는 함수가 shell() 로 정의 되어 있고 main() 에서는 배열을 선언 후 버퍼 오버플로 취약점이 있는 fgets 함수를 사용하였습니다. 그러나 shell() 을 호출하지 않고 call() 를 호출하여 실행하면 "Hello there!" 문자열을 출력하도록 되게 해놓았습니다. 코드만 봐도 알 수 있듯이 call() 을 호출하는 부분에 shell() 주소를 집어 넣어 shell() 을 실행하여 쉘을 획득하는 방식으로 풀어 보겠습니다.



 구조는 전에 레벨과 비슷합니다. 56바이트를 확보하고 0xffffffc8 부터 들어가는데 0xfffffff0 부분에 주소를 넣어서 그 주소를 호출하는 것으로 보아 printit() 가 들어간다고 볼 수 있습니다. 이 주소에 shell() 주소를 넣어서 쉘을 실행 시키겠습니다.


40Byte+Shell()주소



printit()와 shell()의 주소를 조회해 보니 printit()의 주소 0x08048500 가 아까 main() 에 들어가는 주소임을 알 수 있습니다. 그리고 shell() 은 0x080484d0로 확인되 었습니다. 위에 넣은 형식처럼 해서 공격 코드를 작성 하겠습니다. fgets 함수 이므로 cat과 같이 실행하여서 | 로 넘겨 주겠습니다.



ftz level16 을 풀어보았습니다.


728x90
반응형

'Hack > ftz' 카테고리의 다른 글

ftz 풀이 level18  (0) 2017.01.08
ftz 풀이 level17  (0) 2017.01.06
ftz 풀이 level15  (0) 2017.01.04
ftz 풀이 level14  (0) 2017.01.03
ftz 풀이 level13  (0) 2017.01.02

댓글