#!/usr/bin/php
<?php
define
("START_INDEX"1);

function 
startFuzzing()
{
    
$i 0;
    
$arr get_defined_functions();
    while (list(
$type,$list) = each($arr)) {
        if (
$type == "internal" && is_array($list)) {
            
sort($list);
            foreach (
$list as $func) {
                if (
$func == "_")
                    
$func2 "gettext";
                else
                    
$func2 preg_replace("/_/""-"$func);
                
fuzz($func, ++$i);
            }
        }
    }
}

function 
my_erro($errno$errstr)
{
    return(
false);
}

function 
fuzz($f$index)
{
$data = array(str_repeat("A"8192), str_repeat("A"1024), str_repeat("A"2048), str_repeat("A"8192),             str_repeat("A"16384),str_repeat("A"32768), "%s%s%s%s%s%s%s%s""%x%x%x%x%x%x%x%x",                 "%d%d%d%d%d%d%d%d",  -10121474836474294967294,21474836484294967295);

$max_num_params 3;

$ignore_list_1 = array("usleep""sleep""pcntl_fork""array_fill""bcdiv""bcpow""call_user_func""call_user_method""call_user_method_array""bcadd"'bcsqrt'"bcsub""ereg""eregi""ereg_replace""eregi_replace""fsockopen"'sleep''ob_start''usleep''pcntl_fork''ereg''array_fill''assert''bcadd''bcdiv''bcpow''bcsqrt''bcsub''call_user_method''call_user_method_array''ereg_replace''eregi''eregi_replace''ftp_connect''ftp_ssl_connect''gzinflate''gmmktime''gzuncompress''mcrypt_create_iv''metaphone''mktime''ob_start''mysql_fetch_object''mysqli_connect''ncurses_init''ncurses_nonl''number_format''openssl_get_privatekey''openssl_get_publickey''pg_connect''pg_pconnect''php_strip_whitespace''posix_access''session_module_name''split''spliti''sqlite_popen''str_pad''str_repeat''str_rot13''strripos''time_sleep_until''unpack'"gmp_fact""gmp_pow""gmp_prob_prime""gmp_random""imagecreatefromgd""leak""mysql_connect""mysql_pconnect""spl_autoload_register""sqlite_factory""mail");

$ignore_list_2 = array( 1=>'highlight_file'2=>'imagecreate'3=>'imagecreatetruecolor'4=>'show_source',
            
5=>'similar_text');

$ignore_list_3 = array(1=>'similar_text'2=>'simplexml_load_string');

    if (
$index START_INDEX)
        return;

    if (
strpos($f"dba") > 0)
        return;

    
error_reporting(E_ERROR);

    if (
array_search($f$ignore_list_1) === FALSE)
    {
        foreach (
$data as $value)
        {
            echo 
"Running '$f' (#$index) with DATA='" substr(" " .$value110) . " - " 
                 
strlen($value) . "'\n";
            echo 
"1st param\n";
            try {
            eval(
"\$res = $f(\$value);");
            }
            catch(
Exception $e){echo "EXCEPTION:" $e "\n";}
            echo 
"Response:" substr(" "$res110) . "\n";

            if (
array_search($f$ignore_list_2) === FALSE) {
                echo 
"2nd param\n";
                try{
                eval(
"\$res = $f(\$value, \$value);");
                }
                catch(
Exception $e){echo "EXCEPTION:" $e "\n";}
/*
                if ($res != "")
                    echo "Response:" . substr(" ". $res, 1, 10) . "\n";*/
            
}

            if (
array_search($f$ignore_list_3) === FALSE) {
                echo 
"3rd param\n";
                try {
                eval(
"\$res = $f(\$value, \$value, \$value);");
                }
                catch(
Exception $e){echo "EXCEPTION:" $e "\n";}

                
/*if ($res != "")
                    echo "Response:" . substr(" ". $res, 1, 10) . "\n";*/
            
}

        }
        echo eval(
"$f(\$data);") . "\n";
        
//echo eval("$f(\$data, \$data);") . "\n";
        //echo eval("$f(\$data, \$data, \$data);") . "\n";
    
} else {
        echo 
"Ignoring $f\n...";
    }
}

function 
my_errno($errno$errstr$errfile$errline)
{
    
var_dump($errstr);
}
set_error_handler("my_errno");
startFuzzing();
//fuzz("mb_ereg", 1);
?>