level20 --- we are just regular guys
우선 level20의 디렉토리를 확인한다.
attackme라는 의심스러운 파일이 존재한다. attackeme는 clear의 권한을 가지고 있고, setuid가 걸려있는 파일이다.
우리가 공격할 대상이 attackme일 가능성이 크다고 생각하고 hint를 보자.
앞서 보았듯이 format string 취약점을 가지고 있는 소스이다.
또한 fgets 함수에서 79 글자만 쓸 수 있도록 제한하고 있다. 따라서 buffer overflow 공격하기 어렵다.
실제로 format string 취약점을 가지고 있는지 확인해보자.
서식 지정자를 통해 스택영역의 내용을 알 수 있고 "%n" 서식 지정자를 이용해 원하는 주소에 write할 수 있을 것이다.
앞서 얘기한것과 같이 우리가 공격해야할 부분은 .dtors의 주소이다.
심볼이 보이지 않는다. 이것은 문제 제작자가 컴파일 할 때 심볼 분석이 되지 않도록 컴파일 한 것이다.
하지만, objdump를 이용해 메모리 정보를 확인할 수 있다.
__DTOR-LIST__ 의 주소가 0x08049594 라는 것을 확인할 수 있다.
우리가 공격할 주소는 0x08049598이 된다.
AAAA \x98\x95\x04\x08 AAAA \x9a\x95\x04\x08 %8x %8x %8x
4byte 4byte 4byte 4byte 8byte 8byte 8byte = 40 byte
'Wargame > FTZ' 카테고리의 다른 글
해커스쿨 FTZ level19 (Return To Libc) (0) | 2018.08.05 |
---|---|
해커스쿨 FTZ level18 (0) | 2018.08.05 |
해커스쿨 FTZ level17 (0) | 2018.08.04 |
해커스쿨 FTZ level16 (0) | 2018.08.04 |
해커스쿨 FTZ level15 (0) | 2018.08.04 |