우선 gremlin파일이 존재함으로 c파일을 열어봤다. 별거 없이 strcpy가 입력받을 값을 제한하지 않아서 취약점이 생겼다.
버퍼에 쉘코드 적당히 넣고 나머지 버퍼 채우고 fsp채우고 ret에 쉘코드 시작 주소를 넣어주면 해결 될 것 같다.
처음 서버 설정할때 직접적으로 파일을 건드릴 수 없게 설정해서 tmp파일에 옮겨서 분석을 했다.
printf 함수 위치에서 break point를 걸고 a인자를 넣어줬다.
느낌을 보니 대강 0xbffffa28에서 부터 인자가 들어가는 것 같았다.
보면 0xbffffb28까지 버퍼를 채우고 fsp를 채운뒤 0x400309cb로 뛰는 것을 볼 수 있다.
이제 쉘을 따러 가보자.
우선 "A"를 30개 정도 넣고, 쉘코드
"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"
를 넣고 남은 버퍼+fsp인 206개 채워넣고 주소 넣고 보내면.
쉘이 따진다.
'war game > LOB' 카테고리의 다른 글
LOB-level5(egghunter + bufferhunter) (0) | 2019.06.24 |
---|---|
LOB-level4(egghunter) (0) | 2019.06.13 |
LOB-level3(small buffer + stdin) (0) | 2019.06.09 |
LOB-level2(small buffer) (0) | 2019.06.09 |
LOB-password (0) | 2019.06.07 |