FTZ level 17 FTZ level 17 hint 우선 gdb로 main함수를 까보자 우선 buf와 함수를 받는 부분까지의 크기는 전 문제들과 같이 40byte이다. 환경변수로 쉘코드를 짜서 printit함수를 불러오는 부분에 환경변수 주소를 넣는다. 앞문제와 달리 shell함수가 없으므로 직접 환경변수를 이용해 만들어 주는 것이다. hack이란 환경변수를 만들고 환경변수의 주소를 확인하면 40byte를 채우고 환경변수 주소로 덮는다. 더보기 FTZ level 16 FTZ level 16 hint call함수를 부르는 주소에 printit함수 주소가 들어가 “Hello there!”이 출력될 뿐 쉘코드를 딸 수 있는 shell함수는 실행되지 않는다. fgets함수가 BOF를 일으킬 수 있는 함수이므로 buf에 bof를 일으켜 call함수를 부르는 주소에 shell함수 주소로 덮는다. gdb를 통해 main함수를 보면 ebp-16에 printit함수 즉 call할 함수의 주소를 저장하고 있다. 그리고 ebp-56에 fgets함수를 부르므로 buf가 들어가기 시작한다. 40byte만큼을 채우고 shell함수의 주소로 덮자. shell함수의 주소는 0x080484d0이다. 더보기 FTZ level 15 FTZ level 15 hint 포인터 변수를 부른다. check주소에 저장된 값이 0xdeadbeef여야 하므로 check 주소를 찾아야한다. gdb로 확인해도 이전 문제와 비슷해 보이지만 ebp-16의 주소의 값이 0xdeadbeef와 같은지 확인하고 있다. 0xdeadbeef의 주소는 0x80484b2 더보기 이전 1 ··· 17 18 19 20 21 22 23 ··· 36 다음