Game/L.O.B

L.O.B level5

ellen28 2015. 3. 4. 00:05

level5. orc

cantata


소스확인!! cat wolfman.c


소스를 보니 level4와 마찬가지로 환경변수를 쓸 수 없도록 막아두었고, 

RET 주소가 \xbf로 시작해야하고, 

마지막을 보면 memset함수를 이용해서 버퍼를 초기화 시켜서 버퍼에 쉘코드를 올려봤자 무용지물이 되도록 하였습니다 ㅠㅠ


여러가지 방법으로 풀 수있겠지만, 쉘코드가 RET보다 높은 주소에 올라가는 방법으로 풀겠습니다.

페이로드 : [A*44(dummy)] + [RET(4)] + [쉘코드(25byte)] 와 같은 방식으로 구성했습니다!!

buf의 시작주소와 RET주소는 44만큼 떨어져 있으므로, 쉘코드의 주소는 buf주소 + 48(0x30)이 됩니다.



buf의 시작주소를 구하기위해 wolfman의 사본을 만들고, 주소가 출력될 수 있도록 %s를 %x로 바꾸고

새롭게 컴파일 합니다!


또, argv[1]의 길이에 따라 buf의 시작주소가 바뀌므로 공격할 문자열의 길이를 정확히 보내줍니다.


buf의 주소는 0xbffffab0

쉘코드의 주소 0xbffffab0 + 48(0x30) = 0xbffffae0 == RET주소


쉘이 떴습니다!! 끝!