Game/L.O.B

L.O.B level4

ellen28 2015. 3. 4. 00:04

level4. goblin

hackers proof


소스 확인을 위해 cat orc.c 


전 레벨들 보다 급격히 소스가 길어졌습니다 ㅡ.ㅡ;

소스를 보니 우선 buffer를 40바이트 할당하고, 인자의 갯수를 검사하고, 

egghunter라는 부분이있는데 memset함수를 이용해서 환경변수를 죄다 0으로 만들어 버립니다.

고로 환경변수에 쉘코드를 넣어도 0으로 초기화되서 이용할 수가 없게 됩니다ㅠㅠ


또, argv[1][47]부분이 \xbf가 아니면 강제종료하는데, 즉 RET주소가 \xbf로 시작하지 않으면 강제종료 시키는것에 유의해야합니다.


잘 생각을 해보면 ret보다 높은 주소인 부분에 쉘코드를 넣어도되지만,

현재 buf가 40 바이트이므로 25바이트인 쉘코드를 이용할수있으므로 간단하게 페이로드를 구성했습니다.

orc.c의 사본을 만들고 , buf의 주소가 나올수있도록 %s를 %x로 바꾸어 컴파일합니다.


* argv[1]의 길이에 따라 buf의 주소가 달라지므로 보낼 인자의 길이를 정확하게 해야합니다.

RET주소 == buf주소 : 0xbffffaa0 가 됩니다.


페이로드 : [쉘코드(25byte)] + [\x90*19] + [RET]

** 꼭꼭 bash2에서!!


쉘이 떴습니다!! 끝!