cobolt
-
LEVEL 03 cobolt write-upSystem hacking training/Hackerschool LOB 2018. 3. 15. 21:13
[문제] 이번 문제도 간단한 bof 문제인걸 알 수 있다. buffer가 16byte인데 gets() 의 사용으로 인해서 bof 가 일어난다. gets() 는 문자열의 길이를 제한하지 않기 때문에 buffer에 입력을 받는다면 buffer의 영역을 넘어서 return address를 변조할 수 있다. 예상되는 스택은 이러하다. | char buffer[16] | SFP | RET | 버퍼가 작으니 쉘코드를 스택에 직접 올리는 방법은 제한된다. 따라서 환경변수에 쉘코드를 올리고, 쉘코드를 넣은 환경변수의 주소를 return address 로 변조하면 쉘을 띄울 수 있다. like this..