2022. 3. 9. 00:25ㆍSite/FTZ
이번시간에는 level15에 대하여 풀어보겠습니다
공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다
ls -al을 명령하여 전체 디렉토리와 파일목록을 확인해 보니 이번에도 attackme파일이 있네요
hint파일 열어보니 level14코드와 상당히 비슷하네요
*
int형 crap선언
int형포인터 check선언
char형 buf배열에 20bytes할당
fgets함수를 통해서 buf에 문자열 45bytes 만큼 입력받음
포인터 check가 가리키는 주소값이 0xdeadbeef 주소값과 같으면
level15 id
/bin/sh 실행
*
이번에 다른점은 check를 char형 포인터 변수로 선언한것입니다
포인터는 주소값을 가리키므로 결국 저 0xdeadbeaf의 주소값을 알아내서 check자리에 넣어주면 될것같네요...
gdb로 attackme파일을 실행시켜줍니다
main+3, 4 : 56bytes[0x38] + 4bytes[0x4] 총 70bytes 공간 확보 / main+17 : buf의 주소값 = ebp-56 / main+29 : ebp-16을 eax에 복사 / main+32 : eax[ebp-16]과 0xdeadbeef와 비교
일단 main+17에서 buf의 위치가 ebp-56이고 *check의 위치가 ebp-16입니다
전 레벨과 같이 buf와 check의 거리 = 총 40bytes -> [buf((20bytes) + dummy(20bytes) + check(4bytes)]
-> buf + dummy에 40bytes를 쓰레기값로 채워준다음 check에 해당하는 4bytes에 0xdeadbeef의 주소값을 넣어주면 될것같습니다...
0xdeadbeef의 주소값을 알아내기 위해 0xdeadbeef가 위치한 0x080484b0부분을 입력했는데 beef와 dead가 떨어져 있네요... 좀더 뒤로 가봐야될 것 같습니다
2bytes정도 더 이동했더니 main+34부분에 0xdeadbeef의 주소값이 0x80484b2인 것을 확인했습니다
'Site > FTZ' 카테고리의 다른 글
FTZ level17 (0) | 2022.03.09 |
---|---|
FTZ level16 (0) | 2022.03.09 |
FTZ level14 (0) | 2022.03.08 |
FTZ level13 (0) | 2022.03.07 |
FTZ level12 (0) | 2022.03.06 |