본문 바로가기

Python

[python] Fuzzer 만들기

Fuzzing 이란?

Fuzzing은 일종의 소프트웨어 보안 테스트 기법이다. 기본적인 아이디어는 프로그램 실행 시 무작위 데이터를 attach하는 것이다. 만약 프로그램 실행이 제대로 되지 않는다면 프로그램에 수정할 결함이 있다는 것을 의미한다. 즉, 무작위 데이터를 어플리케이션에 입력하고, 그 결과 어플리케이션에 exception, crash, 또는 서버가 다운되는 등의 에러가 발생할 경우 보안 취약점이 존재할 가능성이 높다는 것이다.


간단한 Fuzzing을 수행하는 Fuzzer를 만들기

아래 코드는 target 서버의 21번 포트인 ftp 서버에 접속하여 user 명령어에 'A'문자를 무작위 대입하여 충돌이 발생하는 지를 테스트하는 코드입니다.

※ send() 에서 python 2.x 버전에서는 encode()를 붙이지 않아도 되지만 3.x 버전에서는 encode()를 붙어야 에러가 나지 않습니다.




[실행화면]

특정 ftp 서버에 접속하여 테스트 결과 A문자를 100번 입력하였을 때 충돌이 발생하는 것을 확인할 수 있습니다.






[참고]

www.primalsecurity.net

CodeEngn.com


'Python' 카테고리의 다른 글

[python] 포트스캐너 만들기  (0) 2015.09.23