HackerSchool LOB Level 12
Hacking/LOB(RedHat)

HackerSchool LOB Level 12

이 문제는 FPO기법을 이해해야하는 문제라서 푸는데 오래 걸렸다.

코드를 보면 

 ※   argc가 2보다 커야함

 ※   problem_child 함수에 argv[1]이 인자로 들어간다

 ※   problem_child 함수를 보면 버퍼가 40이고  인자값이 stp를 1바이트 침범함


위를 종합해보면 stp를 침범한 1바이트가 핵심인거같다.

함수의 에필로그는 

LEAVE 

mov esp, ebp           pop ebp        // esp를 ebp에 복사하고 ebp를 스택에서 꺼낸다

RET

pop eip                   jmp  eip       // eip를 꺼내고 eip로 점프한다   eip를 pop하면 +4가된다 ->  버퍼가 0에서 4가됨

 

darkknight.c를 복사해서 

printf("0x%x\n",buffer-4);  코드를추가해준다

eip가 4이기때문에 버퍼에서 -4로 설정해줘야 버퍼가 0이 된다.




인자값을 맞추어 실행시키면 버퍼 -4 주소가 나온다

0xbffffab0   이다.


darkknight를 디버깅해보면 우리가 조작할수잇는 stp는  0xbffffa00이다. 우리는 여기서 1바이트를 조작할수있으니까 리틀앤디언으로 보면 \x00을 조작 가능한것이다  stp를 조작해주어 eip주소를  0xbffffaac로 해주면 버퍼0으로와 놉을만나 쉘코드가 실행되게되어 풀린다

비밀번호는  new attacker 이다



'Hacking > LOB(RedHat)' 카테고리의 다른 글

HackerSchool LOB Level 14  (0) 2015.08.10
HackerSchool LOB Level 13  (0) 2015.08.05
HackerSchool LOB Level 11  (0) 2015.07.28
HackerSchool LOB Level 10  (0) 2015.07.26
HackerSchool LOB Level 9  (0) 2015.07.26