우선 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

+ Recent posts