해커스쿨 ftz Level11
MacOS에서 푸는 해커스쿨 ftz
해커스쿨 ftz level11 단계이다.
먼저 ftz서버를 실행한다.
서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다.
Mac의 터미널을 열어 서버에 접속합니다.
명령어는
ssh -c aes128-cbc level11@서버ip
라고 입력합니다.
Id: level11, pw: what!@#$? 로 로그인하였다.
ls -al 명령어를 통해 파일들을 확인해보니 이전과 다르게 attackme라는 파일이 보이는 것을 알 수 있다.
hint를 확인하니 소스코드가 나왔다. attackme의 소스코드인 것 같다.
버퍼오버플로우를 이용한 문제로 보인다.
gdb를 통해 디버깅을 해보기로 했다.
Main함수를 살펴보면 main+41 부분에서 0xfffffef8을 보면 strcpy가 call 되기까지 264만큼이고 str 배열에는 256바이트가 할당되었으므로 8바이트의 dummy가 존재한다고 볼 수 있다.
디버깅을 시작했지만 오류가뜨는 것을 볼 수 있다.
찾아보니 해당 파일을 tmp 디렉토리에 복사하여 디버깅해야 한다고 한다.
tmp 디렉토리에 복사하여 디버깅을 시작했다. Strcpy명령어 수행 후로 breakpoint를 잡았다.
A를 243개 B를25개 C를 4개 넣어 실행을 시켰다.
해당 breakpoint에서 esp의 값을 확인하니 입력했던 A, B, C가 들어있는 것을 볼 수 있다.
gdb를 나와 원본 attackme가 있는 디렉토리로 이동한 후
A가 들어갔던 주소를 바탕으로 0xbffff700주소를 끝에 붙여
./attackme `python -c 'print "\x90"*243+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"+"\x00\xf7\xff\xbf"'`
을 실행했더니 segmentation fault가 출력되었다.
뒷부분의 주소를 바꾸어가며 시도했더니 0xbffffd40 주소에서 쉘이 실행되었다.
my-pass 명령어를 입력하니 level12의 패스워드를 알 수 있었다.
끝.
'Security&Hacking > 시스템 해킹' 카테고리의 다른 글
해커스쿨 ftz level13 (macOS) (0) | 2020.01.19 |
---|---|
해커스쿨 ftz level12 (macOS) (0) | 2020.01.19 |
해커스쿨 ftz level10 (macOS) (0) | 2020.01.19 |
해커스쿨 ftz level9 (macOS) (0) | 2020.01.19 |
해커스쿨 ftz level8 (macOS) (0) | 2020.01.19 |