FTZ level15

2022. 3. 9. 00:25Site/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