- You need JAVA 1.6 to run stranger.
- Stranger has been tested under Linux Ubuntu 8.04.
- Currently it only supports PHP4
The best way to run stranger is using one of the two python scripts: test-php-script.py and test-php-app.py. The scripts - by default - will run string analysis to detect XSS, SQLI and MFE vulnerabilities against predefined attack patterns. Note that the two scripts provide the same functionality in terms of analysis and they only differ in the way they conduct the analysis.
- If you want to analyze a single PHP script then run test-php-script.py
as following:
./test-php-script.py [output-directory] name-of-php-script-file
You will get the result of the analysis in the standard output. If there is any vulnerability, then all automata related to this vulnerability will be output in a dot format to standard output. User can refer to the dependency graphs in the output directory (created in the current directory by default) to understand the vulnerability.
- If you want to analyze a whole PHP web application then run test-php-app.py
as following:
./test-php-app.py [output-directory] name-of-php-app-directory
This script will iterate recursively on the application directory and analyze each PHP script (following the same methodology as test-php-script.py). As in test-php-script.py the result of the analysis will be output to the standard output. If a vulnerability is found in one of the files, then you can refer to the application output directory to get more details. For each php script a directory named against it will be created and all the vulnerability analysis dependency graphs will be output to this directory.
Here we will go quickly on a sample run of vuln01.php which is the first PHP script in the benchmarks and explain briefly the output.
Here is the code for this PHP script:/* simplified version of the vulnerability:
program: MyEasyMarket-4.1
file: buy.php:138, trans.php:218
*/
$www = $_GET["www"];
$limit = (int)$_GET["limit"];
$l_otherinfo = "URL";
$www = preg_replace("/[^A-Za-z0-9 .-@://]/","",$www);
echo "<td>" . $l_otherinfo . ": " . $www . "</td>";
?>
To run stranger on vuln01.php type:
You will get the following output:
*** resolving literal includes ***
*** performing type analysis ***
inclusion iterations: 1
resolved literal includes: 0
resolved non-literal includes: 0
cyclic includes: 0
not found includes: 0
unresolved non-literal includes: 0
*** performing taint analysis ***
Finished.
Time: 0 seconds
*** detecting vulnerabilities ***
*****************
SQL Taint Analysis BEGIN
*****************
SQL Taint Analysis RESULT:
--------------------------
Number of analyzed sinks: 0
Number of tainted sinks: 0
*****************
SQL Stranger Sanit Analysis BEGIN
*****************
----------------------------
Total Vuln Count: 0
----------------------------
*****************
SQL Stranger Sanit Analysis END
*****************
============================================================================
Performance information
============================================================================
Time elapsed in seconds = 0.0
Forward analysis time in seconds = 0.0
Backward analysis time in seconds = 0.0
String length = 10
Number of concat = 2
Time of concat in seconds = 0.0040
Number of union = 2
Time of union in seconds = 0.0030
Number of replace = 0
Time of replace in seconds = 0.0
Number of preconcat = 0
Time of preconcat in seconds = 0.0
Number of constPreconcat = 0
Time of constPreconcat in seconds = 0.0
Total number of preConcat = 0
Total time of preconcat in seconds = 0.0
Number of prereplace = 0
Time of prereplace in seconds = 0.0
Memory consumption = 2437128 bytes
From MONA: total allocated memory = 1895672
------------- GRAPHS INFO -----------
============================================================================
*****************
XSS Taint Analysis BEGIN
*****************
XSS Taint Analysis RESULT:
--------------------------
Number of analyzed sinks: 1
Number of tainted sinks: 1
*****************
XSS Stranger Sanit Analysis BEGIN
*****************
-----------------------------------------------------------------------------------------------------------------
Starting analysis for SINK: _main._t0_0 (15)\n**/vuln01.php
-----------------------------------------------------------------------------------------------------------------
!!! A vulnerability has been found in SINK: !!!
_main._t0_0 (15) **/vuln01.php
digraph MONA_DFA {
rankdir = LR;
center = true;
size = "7.5,10.5";
edge [fontname = Courier];
node [height = .5, width = .5];
node [shape = doublecircle]; 15;
node [shape = circle]; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14;
node [shape = box];
init [shape = plaintext, label = ""];
init -> 0;
0 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 1 1 1 1 X X\nX X 0 1 1 1 X X\nX X X 0 1 1 X X\nX X X X 0 1 X X\nX,X,X,X,1,X,X,X"];
0 -> 2 [label="0\n0\n1\n1\n1\n1\n0\n0"];
1 -> 1 [label="X\nX\nX\nX\nX\nX\nX\nX"];
2 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 1 1 1 1 1 X\nX X 0 1 1 1 1 X\nX X X 0 0 0 1 X\nX X X 0 1 1 X X\nX X X X 0 1 X X\nX,X,X,X,1,X,X,X"];
2 -> 3 [label="0\n1\n1\n1\n0\n1\n0\n0"];
3 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 1 1 1 1 1 X\nX X 0 0 0 0 1 X\nX X 0 0 0 1 X X\nX X 0 1 1 X X X\nX X X 0 1 X X X\nX,X,X,1,X,X,X,X"];
3 -> 4 [label="0\n1\n1\n0\n0\n1\n0\n0"];
4 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 1 1 1 1 X X\nX X 0 1 1 1 X X\nX X X 0 1 1 X X\nX X X X 0 1 X X\nX,X,X,X,X,1,X,X"];
4 -> 5 [label="0\n0\n1\n1\n1\n1\n1\n0"];
5 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 0 0 0 0 1 X\nX 0 1 1 1 1 X X\nX X 0 0 0 1 X X\nX X 0 1 1 X X X\nX X X 0 1 X X X\nX,X,X,0,X,X,X,X"];
5 -> 6 [label="0\n1\n0\n1\n0\n1\n0\n1"];
6 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 0 0 0 0 1 X\nX 0 1 1 1 1 X X\nX X 0 0 0 1 X X\nX X 0 0 1 X X X\nX X 0 1 X X X X\nX,X,X,1,X,X,X,X"];
6 -> 7 [label="0\n1\n0\n1\n0\n0\n1\n0"];
7 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 0 0 0 0 1 X\nX 0 0 0 0 1 X X\nX 0 1 1 1 X X X\nX X 0 1 1 X X X\nX X X 0 1 X X X\nX,X,X,1,X,X,X,X"];
7 -> 8 [label="0\n1\n0\n0\n1\n1\n0\n0"];
8 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 1 1 1 1 X X\nX X 0 1 1 1 X X\nX X X 0 0 1 X X\nX X X 0 1 X X X\nX,X,X,X,1,X,X,X"];
8 -> 9 [label="0\n0\n1\n1\n1\n0\n1\n0"];
9 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 0 0 0 1 X X\nX 0 0 0 1 X X X\nX 0 0 1 X X X X\nX 0 1 X X X X X\nX,1,X,X,X,X,X,X"];
9 -> 10 [label="0\n0\n1\n0\n0\n0\n0\n0"];
10 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
10 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
10 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
11 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
11 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,0,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
11 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
11 -> 12 [label="0\n0\n1\n0\n1\n1\n1\n1"];
12 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
12 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 0 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X 0 1 1 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,X,X,X,1,X,X,0"];
12 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
12 -> 13 [label="0\n1\n1\n1\n0\n1\n0\n0"];
13 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
13 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 0 1 X X 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,1,X,X,X,X,0"];
13 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
13 -> 14 [label="0\n1\n1\n0\n0\n1\n0\n0"];
14 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
14 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,1,X,X,X,0,1,X,X,X,X,X,0"];
14 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
14 -> 15 [label="0\n0\n1\n1\n1\n1\n1\n0"];
15 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
15 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
15 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
}
digraph MONA_DFA {
rankdir = LR;
center = true;
size = "7.5,10.5";
edge [fontname = Courier];
node [height = .5, width = .5];
node [shape = doublecircle]; 23;
node [shape = circle]; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22;
node [shape = box];
init [shape = plaintext, label = ""];
init -> 0;
0 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 1 1 1 1 X X\nX X 0 1 1 1 X X\nX X X 0 1 1 X X\nX X X X 0 1 X X\nX,X,X,X,1,X,X,X"];
0 -> 2 [label="0\n0\n1\n1\n1\n1\n0\n0"];
1 -> 1 [label="X\nX\nX\nX\nX\nX\nX\nX"];
2 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 1 1 1 1 1 X\nX X 0 1 1 1 1 X\nX X X 0 0 0 1 X\nX X X 0 1 1 X X\nX X X X 0 1 X X\nX,X,X,X,1,X,X,X"];
2 -> 3 [label="0\n1\n1\n1\n0\n1\n0\n0"];
3 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 1 1 1 1 1 X\nX X 0 0 0 0 1 X\nX X 0 0 0 1 X X\nX X 0 1 1 X X X\nX X X 0 1 X X X\nX,X,X,1,X,X,X,X"];
3 -> 4 [label="0\n1\n1\n0\n0\n1\n0\n0"];
4 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 1 1 1 1 X X\nX X 0 1 1 1 X X\nX X X 0 1 1 X X\nX X X X 0 1 X X\nX,X,X,X,X,1,X,X"];
4 -> 5 [label="0\n0\n1\n1\n1\n1\n1\n0"];
5 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 0 0 0 0 1 X\nX 0 1 1 1 1 X X\nX X 0 0 0 1 X X\nX X 0 1 1 X X X\nX X X 0 1 X X X\nX,X,X,0,X,X,X,X"];
5 -> 6 [label="0\n1\n0\n1\n0\n1\n0\n1"];
6 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 0 0 0 0 1 X\nX 0 1 1 1 1 X X\nX X 0 0 0 1 X X\nX X 0 0 1 X X X\nX X 0 1 X X X X\nX,X,X,1,X,X,X,X"];
6 -> 7 [label="0\n1\n0\n1\n0\n0\n1\n0"];
7 -> 1 [label="0 0 0 0 0 0 0 1\n0 1 1 1 1 1 1 X\nX 0 0 0 0 0 1 X\nX 0 0 0 0 1 X X\nX 0 1 1 1 X X X\nX X 0 1 1 X X X\nX X X 0 1 X X X\nX,X,X,1,X,X,X,X"];
7 -> 8 [label="0\n1\n0\n0\n1\n1\n0\n0"];
8 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 1 1 1 1 X X\nX X 0 1 1 1 X X\nX X X 0 0 1 X X\nX X X 0 1 X X X\nX,X,X,X,1,X,X,X"];
8 -> 9 [label="0\n0\n1\n1\n1\n0\n1\n0"];
9 -> 1 [label="0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 X\n0 1 1 1 1 1 X X\nX 0 0 0 0 1 X X\nX 0 0 0 1 X X X\nX 0 0 1 X X X X\nX 0 1 X X X X X\nX,1,X,X,X,X,X,X"];
9 -> 10 [label="0\n0\n1\n0\n0\n0\n0\n0"];
10 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
10 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
10 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
11 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
11 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,0,X,X,0,1,X,X,X,X,X,0"];
11 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
11 -> 12 [label="0\n1\n0\n1\n0\n0\n1\n1"];
12 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
12 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 0 0 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 0 1 X X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,0,X,X,X,X,0,1,X,X,X,X,X,0"];
12 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
12 -> 13 [label="0\n1\n0\n0\n0\n0\n1\n1"];
13 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
13 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,1,X,X,0,1,X,X,X,X,X,0"];
13 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
13 -> 14 [label="0\n1\n0\n1\n0\n0\n1\n0"];
14 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
14 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,0,X,X,X,X,0,1,X,X,X,X,X,0"];
14 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
14 -> 15 [label="0\n1\n0\n0\n1\n0\n0\n1"];
15 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
15 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,1,X,X,X,0,1,X,X,X,X,X,0"];
15 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
15 -> 16 [label="0\n1\n0\n1\n0\n0\n0\n0"];
16 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
16 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 1 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,1,X,X,0,1,X,X,X,X,X,0"];
16 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
16 -> 17 [label="0\n1\n0\n1\n0\n1\n0\n0"];
17 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
17 -> 10 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n1 X X 0 1 X X 0 1 0 1 X X X 0 1\nX,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
17 -> 11 [label="0\n0\n1\n1\n1\n1\n0\n0"];
17 -> 18 [label="0\n0\n1\n0\n0\n0\n0\n0"];
18 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
18 -> 18 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
18 -> 19 [label="0\n0\n1\n1\n1\n1\n0\n0"];
19 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
19 -> 18 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,0,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
19 -> 19 [label="0\n0\n1\n1\n1\n1\n0\n0"];
19 -> 20 [label="0\n0\n1\n0\n1\n1\n1\n1"];
20 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
20 -> 18 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 0 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X 0 1 1 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,X,X,X,1,X,X,0"];
20 -> 19 [label="0\n0\n1\n1\n1\n1\n0\n0"];
20 -> 21 [label="0\n1\n1\n1\n0\n1\n0\n0"];
21 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
21 -> 18 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 0 1 X X 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,1,X,X,X,X,0"];
21 -> 19 [label="0\n0\n1\n1\n1\n1\n0\n0"];
21 -> 22 [label="0\n1\n1\n0\n0\n1\n0\n0"];
22 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
22 -> 18 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,1,X,X,X,0,1,X,X,X,X,X,0"];
22 -> 19 [label="0\n0\n1\n1\n1\n1\n0\n0"];
22 -> 23 [label="0\n0\n1\n1\n1\n1\n1\n0"];
23 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 1\n0 0 0 0 0 0 1 1 1 1 1 X\n0 1 1 1 1 1 0 0 1 1 1 X\nX 0 0 0 0 0 1 1 0 1 1 X\nX 0 0 0 1 1 1 1 0 1 1 X\nX 0 0 1 0 1 0 1 0 0 1 X\nX 0 1 X X 0 1 X 0 1 X X\nX,1,X,X,X,X,1,X,0,1,X,X"];
23 -> 18 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
23 -> 19 [label="0\n0\n1\n1\n1\n1\n0\n0"];
}
*** XSS Stranger Sanit Backward Analysis BEGIN ***
Backward analysis automaton result for input node ==> _superglobals.$_GET[www] (9)\n**/vuln01.php ID=19 :
----------------------------
digraph MONA_DFA {
rankdir = LR;
center = true;
size = "7.5,10.5";
edge [fontname = Courier];
node [height = .5, width = .5];
node [shape = doublecircle]; 9;
node [shape = circle]; 0; 1; 2; 3; 4; 5; 6; 7; 8;
node [shape = box];
init [shape = plaintext, label = ""];
init -> 0;
0 -> 0 [label="0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 0 1 1 1 1 1\n0 1 1 1 1 1 X X 0 1 1 1 1\nX 0 1 1 1 1 X X X 0 1 1 1\nX X 0 1 1 1 X X X X 0 1 1\nX X X 0 1 1 X X X X X 0 1\nX X X X 0 1 X X X X X X 0\nX,X,X,X,1,X,X,X,X,X,X,X,X"];
0 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
0 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
1 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,0,X,X,0,1,X,X,X,X,X,0"];
1 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,0,1,X,0,1,X,X,X,X,X,X,X"];
1 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
1 -> 3 [label="0\n1\n0\n1\n0\n0\n1\n1"];
2 -> 2 [label="X\nX\nX\nX\nX\nX\nX\nX"];
3 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 0 0 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 0 1 X X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,0,X,X,X,X,0,1,X,X,X,X,X,0"];
3 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
3 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
3 -> 3 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
3 -> 4 [label="0\n1\n0\n0\n0\n0\n1\n1"];
4 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,1,X,X,0,1,X,X,X,X,X,0"];
4 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
4 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
4 -> 4 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
4 -> 5 [label="0\n1\n0\n1\n0\n0\n1\n0"];
5 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,0,X,X,X,X,0,1,X,X,X,X,X,0"];
5 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
5 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
5 -> 5 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
5 -> 6 [label="0\n1\n0\n0\n1\n0\n0\n1"];
6 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,1,X,X,X,0,1,X,X,X,X,X,0"];
6 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
6 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
6 -> 6 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
6 -> 7 [label="0\n1\n0\n1\n0\n0\n0\n0"];
7 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 1 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,1,X,X,0,1,X,X,X,X,X,0"];
7 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
7 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
7 -> 7 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
7 -> 8 [label="0\n1\n0\n1\n0\n1\n0\n0"];
8 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n1 X X 0 1 X X 0 1 0 1 X X X 0 1\nX,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
8 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
8 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
8 -> 8 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
8 -> 9 [label="0\n0\n1\n0\n0\n0\n0\n0"];
9 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
9 -> 9 [label="0 1 1 1 1 1 1\nX 0 1 1 1 1 1\nX X 0 1 1 1 1\nX X X 0 1 1 1\nX X X X 0 1 1\nX X X X X 0 1\nX X X X X X 0\nX,X,X,X,X,X,X"];
}
----------------------------
*** XSS Stranger Sanit Backward Analysis End ***
----------------------------
Total Vuln Count: 1
----------------------------
*****************
XSS Stranger Sanit Analysis END
*****************
============================================================================
Performance information
============================================================================
Time elapsed in seconds = 0.622
Forward analysis time in seconds = 0.088
Backward analysis time in seconds = 0.531
String length = 9
Number of concat = 4
Time of concat in seconds = 0.0070
Number of union = 3
Time of union in seconds = 0.0050
Number of replace = 0
Time of replace in seconds = 0.0
Number of preconcat = 0
Time of preconcat in seconds = 0.0
Number of constPreconcat = 0
Time of constPreconcat in seconds = 0.0
Total number of preConcat = 0
Total time of preconcat in seconds = 0.0
Number of prereplace = 0
Time of prereplace in seconds = 0.0
Memory consumption = 3103352 bytes
From MONA: total allocated memory = 3854656
------------- GRAPHS INFO -----------
Sink: _main._t0_0 (15)\n**/vuln01.php
Number of nodes = 21, Number of edges = 20
------------------------
============================================================================
*****************
MFE Taint Analysis BEGIN
*****************
MFE Taint Analysis RESULT:
--------------------------
Number of analyzed sinks: 0
Number of tainted sinks: 0
*****************
MFE Stranger Sanit Analysis BEGIN
*****************
----------------------------
Total Vuln Count: 0
----------------------------
*****************
MFE Stranger Sanit Analysis END
*****************
============================================================================
Performance information
============================================================================
Time elapsed in seconds = 0.0
Forward analysis time in seconds = 0.0
Backward analysis time in seconds = 0.0
String length = 48
Number of concat = 6
Time of concat in seconds = 0.011
Number of union = 16
Time of union in seconds = 0.019
Number of replace = 1
Time of replace in seconds = 0.0040
Number of preconcat = 1
Time of preconcat in seconds = 0.348
Number of constPreconcat = 1
Time of constPreconcat in seconds = 0.058
Total number of preConcat = 2
Total time of preconcat in seconds = 0.406
Number of prereplace = 1
Time of prereplace in seconds = 0.0040
Memory consumption = 3103352 bytes
From MONA: total allocated memory = 3854656
------------- GRAPHS INFO -----------
============================================================================
Total Time: 0 seconds
The first part of the output is the result of prelimenary analysis which tells you that all included files has been found.
unresolved non-literal includes: 0.
Then there is the result of taint analysis for SQLI. It tells you that there are no tainted SQL sinks.
--------------------------
Number of analyzed sinks: 0
Number of tainted sinks: 0
As taint analysis result was negative, there is no need for string analysis here.
SQL Stranger Sanit Analysis BEGIN
*****************
----------------------------
Total Vuln Count: 0
----------------------------
*****************
SQL Stranger Sanit Analysis END
*****************
On the other hand, taint analysis for XSS shows that there is one tainted sink.
--------------------------
Number of analyzed sinks: 1
Number of tainted sinks: 1
This means that we need string analysis to do furhter more precise investigation. Here string forward analysis shows that the tainted sink is actually vulnerable against the specified attack pattern. It also outputs two automata. The first one represents all possible strings that may reach the tainted sink. The second one is the result of intersecting the first one the attack pattern automaton.
Here is the result of the forward analysis (we ommitted the automata here).
-----------------------------------------------------------------------------------------------------------------
Starting analysis for SINK: _main._t0_0 (15)\n**/vuln01.php
-----------------------------------------------------------------------------------------------------------------
!!! A vulnerability has been found in SINK: !!!
_main._t0_0 (15) **/vuln01.php
String backward analysis gives us an automaton in a dot format as shown here.
Backward analysis automaton result for input node ==> _superglobals.$_GET[www] (9)\n**/vuln01.php ID=19 :
----------------------------
digraph MONA_DFA {
rankdir = LR;
center = true;
size = "7.5,10.5";
edge [fontname = Courier];
node [height = .5, width = .5];
node [shape = doublecircle]; 9;
node [shape = circle]; 0; 1; 2; 3; 4; 5; 6; 7; 8;
node [shape = box];
init [shape = plaintext, label = ""];
init -> 0;
0 -> 0 [label="0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 0 1 1 1 1 1\n0 1 1 1 1 1 X X 0 1 1 1 1\nX 0 1 1 1 1 X X X 0 1 1 1\nX X 0 1 1 1 X X X X 0 1 1\nX X X 0 1 1 X X X X X 0 1\nX X X X 0 1 X X X X X X 0\nX,X,X,X,1,X,X,X,X,X,X,X,X"];
0 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
0 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
1 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,0,X,X,0,1,X,X,X,X,X,0"];
1 -> 1 [label="0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,0,1,X,0,1,X,X,X,X,X,X,X"];
1 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
1 -> 3 [label="0\n1\n0\n1\n0\n0\n1\n1"];
2 -> 2 [label="X\nX\nX\nX\nX\nX\nX\nX"];
3 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 0 0 1 X X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 0 1 X X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,0,X,X,X,X,0,1,X,X,X,X,X,0"];
3 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
3 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
3 -> 3 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
3 -> 4 [label="0\n1\n0\n0\n0\n0\n1\n1"];
4 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,1,X,X,0,1,X,X,X,X,X,0"];
4 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
4 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
4 -> 4 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
4 -> 5 [label="0\n1\n0\n1\n0\n0\n1\n0"];
5 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 X 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,0,X,X,X,X,0,1,X,X,X,X,X,0"];
5 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
5 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
5 -> 5 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
5 -> 6 [label="0\n1\n0\n0\n1\n0\n0\n1"];
6 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 0 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X 0 1 X 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,1,X,X,X,0,1,X,X,X,X,X,0"];
6 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
6 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
6 -> 6 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
6 -> 7 [label="0\n1\n0\n1\n0\n0\n0\n0"];
7 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1\n0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1\n0 1 0 1 1 1 X 0 0 0 1 1 0 0 0 1 0 1 1\n0 1 X 0 1 1 X 0 1 1 0 0 0 0 1 X X 0 0\n0 1 X X 0 1 X X 0 1 0 1 0 1 X X X 0 1\n0,X,X,X,1,X,X,X,1,X,X,0,1,X,X,X,X,X,0"];
7 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
7 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
7 -> 7 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
7 -> 8 [label="0\n1\n0\n1\n0\n1\n0\n0"];
8 -> 0 [label="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1\n1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1\n0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1\n1 0 1 1 1 X 0 1 1 0 0 0 1 0 1 1\n1 X 0 1 1 X X 0 0 0 0 1 X X 0 0\n1 X X 0 1 X X 0 1 0 1 X X X 0 1\nX,X,X,1,X,X,X,X,0,1,X,X,X,X,X,0"];
8 -> 1 [label="0\n0\n1\n1\n1\n1\n0\n0"];
8 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
8 -> 8 [label="0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1\n0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1\n0 1 1 1 1 1 0 0 1 1 1 X 0 1 1 1 1\nX 0 0 0 0 0 1 1 0 1 1 X X 0 1 1 1\nX 0 0 0 1 1 1 1 0 1 1 X X X 0 1 1\nX 0 0 1 0 1 0 1 0 0 1 X X X X 0 1\nX 0 1 X X 0 1 X 0 1 X X X X X X 0\nX,1,X,X,X,X,1,X,0,1,X,X,X,X,X,X,X"];
8 -> 9 [label="0\n0\n1\n0\n0\n0\n0\n0"];
9 -> 2 [label="1\n1\n1\n1\n1\n1\n1\nX"];
9 -> 9 [label="0 1 1 1 1 1 1\nX 0 1 1 1 1 1\nX X 0 1 1 1 1\nX X X 0 1 1 1\nX X X X 0 1 1\nX X X X X 0 1\nX X X X X X 0\nX,X,X,X,X,X,X"];
}
----------------------------
*** XSS Stranger Sanit Backward Analysis End ***
This automaton represents a characterization of all possible attack strings that may exploit the discovered vulnerability.
A dependency graph is output (to the output directory) which shows you how string values flow from various input program points (such as $_GET here) to the tainted sink. This should help you to identify the cause of the vulnerability.