FURL

URL Parser Fuzzing

TLDR: There are generally two main standards for URL parsing, RFC 3986 and WHATWG. Among the languages tested, Rust and Node.js generally follow the WHATWG standard, while Go and Python tend to follow RFC 3986. In my research I found when different components of a system rely on different parsing standards, these inconsistencies can create enough of a parsing differential to bypass filtering performed by one component while causing another component to interpret the same input differently. When both components follow the same standard, however, the available parsing differentials are typically much more limited.

You can view the source of the Differential Fuzzer in my Github

random parsing differentials

Did you know?

Go / NodeMissing delimiters
http:evil.com

Nodefinds the host evil.com and uses / as the path.

Gofinds no host and treats evil.com as an opaque path.

Explore all differentials