본문 바로가기

WARGAME/exploit-exercise

[exploit-exercise] fusion level00

바이너리가 돌고 있는 서버에는 ASLR이 걸려있지만, 접속하면 buffer의 주소값을 얻을 수 있습니다. 


또한, NX-bit 보호기법도 없기 때문에 스택에 쉘 코드를 올리고 eip를 해당 주소부분으로 바꿔주면 됩니다.


bof가 발생하는 부분은 아래 소스의 realpath() 함수입니다.



realpath(path, resolved) 함수에서 path에는 파일명이 들어가게 되고, 해당 파일의 절대 경로를 resolved 변수에 넣어줍니다. 또한 realpath() 함수의 반환값은 해당 파일에 접근 권한이 있는지 여부에 따라 1 or 0을 반환하게 됩니다.


아래 익스플로잇 코드 같은 경우 path에 파일명이 아닌 공격 페이로드를 넣었기 때문에 realpath 함수에서 resolved 변수에 이 페이로드의 절대 경로를 복사해주고 당연히 접근 권한이 없기 때문에 NULL을 반환해 분기문 안으로 들어가 return 1; 을 하게 됩니다. 


이 때, eip가 변조된 것을 볼 수 있습니다. 




'WARGAME > exploit-exercise' 카테고리의 다른 글

[exploit-exercise] fusion level03  (0) 2015.12.22
[exploit-exercise] fusion level02  (0) 2015.12.22
[exploit-exercise] fusion level01  (0) 2015.12.22