Intruder, fuzz, race & sequencer
The tools that send one request many ways. Unlike the scanner, these conclude nothing on their own — what a difference means is the judgment of whoever chose the payloads. They group responses so the outlier is obvious.
Fuzz / intruder
Send one request many times, once per payload, and compare what came back. Responses are
grouped by (status, length) so the crowd is one line and the outlier is a short row below it
— and outliers are measured against the majority, not the baseline (in two hundred
usernames, the unchanged request is just one more wrong answer).
nullhawk fuzz ./engagement <request-id> ... # payload positions and lists
The unthrottled intruder is Pro; a throttled run is available free. It files nothing into
the findings store — it's an instrument, not a detector. (It will replay a POST where the
scanner refuses to, and says the method and count first.)
Race
Send one captured request many times at once, to find a race condition — single-use codes, balance/redeem flows, coupon double-spend:
nullhawk race ./engagement <request-id> ...
Sequencer
Measure how unpredictable a token is — session IDs, CSRF tokens, password-reset tokens:
nullhawk sequencer ./engagement ...
A predictable token is a finding in itself; the sequencer gives you the evidence (the sampled values and the analysis) to back the claim.
When to reach for which
- Fuzz — enumerate a parameter (usernames, ids, files) and spot the anomaly. It found a real local-file-inclusion on a public test target in twelve requests.
- Race — any "this should only work once" flow.
- Sequencer — anything whose security rests on a value being unguessable.