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에서!!
쉘이 떴습니다!! 끝!