id: fuzz-01-02
single: true
info:
  name: Fuzz Injection
variables:
  - xss: |
      sam
      foo
requests:
  - method: GET
    values:
      - custom: "z1123zzz"
    url: >-
      {{.BaseURL}}/tests/sinks.html?name=[[.custom]]{{.xss}}
    detections:
      - StringSearch("response", "mysql_fetch_array")
    conclusions:
      - SetValue("code", StatusCode())
      - SetValue("rt", ResponseTime())
  - conditions:
      - ValueOf("code") == "200"
      - parseInt(ValueOf("code")) > 200
      - parseFloat(ValueOf("rt")) > 1
    method: GET
    url: >-
      {{.BaseURL}}/tests/sinks.html?name=2222222222222
    detections:
      - StringSearch("response", "mysql_fetch_array")
If present, this part will be run before continue to generate request. Just some logic to check to prevent sending too much false positive request.
Usage of conditions section is same from the detection.
Note that value from fonclusions is always return string. Make sure you convert it to Int or Float before compare.
Set some extra value based on the request for later use before we run detection part.
Conclusions using Named Capturing Groups to extract value from response.
| Property | Description | Example | 
|---|---|---|
| SetValue | assign something to a variable | SetValue("value_name", StatusCode()) | 
| StringSelect | Select a string from component | StringSelect("component", "res1", "right", "left") | 
| RegexSelect | Select a string from component by regex | RegexSelect("resHeaders", "SESSID=(?P<sess>([a-zA-Z0-9]+));") then your value will be save in new varialbe sess | 
Prefer to this signatures for better understand.