Fuzzing, also known as fuzz testing, is a type of black box software testing that is used to find implementation bugs by using malformed/semi-malformed data in an automated way. Fuzz testing was developed by Professor Barton Miller and his students at the University of Wisconsin-Madison in 1989 (their ongoing work can be found at http://www.cs.wisc.edu/~bart/fuzz/). When performing fuzz testing, the application/software response is observed, and, based on changes in its behavior (crashing or hanging), implementation bugs are discovered. In a nutshell, the fuzzing process is as follows:
We need to identify the targets and the input vectors (in the case of system applications) and the endpoints (in the case of web applications) that need to be fuzzed. After a proper input seed is generated (random fuzz data), the malformed/semi-malformed fuzz data will be given...