본문 바로가기

Programming/Python

Exploit 기초

Exploit 기초


이번에는 간단한 Exploit을 해보고, 어떻게 하는 것인지 알아보도록 하겠습니다.


먼저 익스플로잇을 하기 전에 환경을 구성해야 합니다. Virtual Machine을 이용해서 가상 OS를 설치해야하는데 Windows XP 32bit를 설치하시길 바랍니다.


그리고 해당 파일을 가상 XP에 받아두시길 바랍니다.


Echo-Server-Strcpy.zip


Echo_Server_strcpy는 현재 프로그램 소스코드가 어떻게 짜여져 있는지 모르는 상태입니다. 임의의 값을 넣어서 확인 해보는 작업을 하도록 해보죠.


Virtual Machine에 설치된 Ubuntu로 돌아가서 다음 소스코드를 작성합니다.





위 소스코드는 앞서 포스팅한 소켓 프로그램에서 사용했던 소스코드 입니다.

buf에 A를 20자를 넣고 해당 값을 서버로 보내주는 프로그램이죠.


가상 XP의 IP 주소는 192.168.0.4 입니다. 아이피를 보는 방법은 cmd - ipconfig로 확인 할 수 있습니다.




이제 가상 XP에서 Echo-Server-Strcpy를 실행 시킵니다. 그러면 대기상태에서 깜빡이는 것을 확인 할 수 있습니다.

그 후 작성한 exploit.py를 실행시켜 보도록 하죠.



실행 시킨 결과 Ubuntu에서는 A가 20번이 출력되고 XP에서는 해당 프로그램이 종료됩니다.



그러면 A를 20번이 아니라 200, 500 번을 준다면 어떻게 될까요?


A*500으로 변경하여 해봅니다.




서버에서 500byte를 받았다고 출력이 되면서 프로그램에 문제가 있어서 종료를 해야 한다고 합니다. 버퍼를 500을 주면 해당 프로그램의 스택에 정상적인 값이 아닌 A의 값이 들어가면서 Overflow가 발생하게 되죠.


이와 같은 방식으로 해당 프로그램에 붙어서 프로그램을 종료시킬 수도 있다는 것을 알아두면 좋겠습니다.

'Programming > Python' 카테고리의 다른 글

Assemble, Disassemble, Search  (0) 2016.03.14
Immunity DBG 기초  (0) 2016.03.14
Raw 소켓 스니핑  (0) 2016.03.14
웹 페이지 만들기  (0) 2016.03.14
소켓 서버 프레임워크  (0) 2016.03.14