рд╣рд░ рдХреЛрдИ рдЬреЛ php рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрдЬреА рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ, рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ:
PHP Notice: Undefined index: test in /var/www/Testing.php on line 171 PHP Notice: Undefined index: test2 in /var/www/Testing.php on line 171
рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐:
PHP Fatal error: Cannot use object of type stdClass as array in /var/www/Testing.php on line 171
рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдирд╛ рдерд╛ред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдХрдХреНрд╖рд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдиреБрдмрдВрдз рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рд╕рдорд╛рди рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
PHP Warning: mysql_affected_rows() expects parameter 1 to be resource, string given in /var/www/Testing.php on line 177
рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рд▓рд┐рдЦрд╛ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрдВрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд╢реВрдиреНрдп рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдЙрд╕рдХрд╛ рдХреЛрдб рд╣реИ:
class tester { public static $useRandom = true; public static $randMin = 1; public static $randMax = 50; public static $stringDefaultPreffix = 'string_'; public static $mode = 'real'; const T_INTEGER = 0; const T_STRING = 1; const T_ARRAY = 2; const T_OBJECT = 3; const T_BOOLEAN = 4; const T_FUNCTION = 5; const T_NULL = 6; public static $allowedTytes = array(self::T_INTEGER,self::T_STRING); public static function getRand() { $dice = array_rand(self::$allowedTytes, 1); switch ($dice) { case self::T_INTEGER : return self::getInt(); break; case self::T_STRING: return self::getString(); break; case self::T_ARRAY: return self::getArray(); break; case self::T_OBJECT: return self::getObject(); break; case self::T_BOOLEAN: return self::getBoolean(); break; case self::T_FUNCTION: return self::getFunction(); break; case self::T_NULL: return self::getNull(); break; default: return true; break; } } public static function getNull() { return null; } public static function getArray() { $array = array(); $arrayLength = mt_rand(self::$randMin, self::$randMax); while (count($array) < $arrayLength) { $array[] = mt_rand(self::$randMin, self::$randMax); } return $array; } public static function getObject() { return new stdClass(); } public static function getBoolean($default = true) { if (self::$useRandom) { return (mt_rand(0, 1) ? true : false); } else { return $default; } } public static function getInt($default = 42) { if (self::$useRandom) { return mt_rand(self::$randMin, self::$randMax); } else { return $default; } } public static function getString($default = 'string_1234567') { if (self::$useRandom) { return uniqid(self::$stringDefaultPreffix); } else { return $default; } } public static function getFunction() { return create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);'); } public function errorHandler($errno, $errstr, $errfile, $errline) { echo '-----ERROR----', PHP_EOL; echo $errstr, PHP_EOL; echo 'Line:', $errline, ' in file: ', $errfile, PHP_EOL; echo '-------------', PHP_EOL; return true; } public static function setErrorHandler() { set_error_handler(array(new self(), "errorHandler")); } public static function test($className = 'stdClass', $method = null) { if (class_exists($className, true)) { $obj = new ReflectionClass($className); $methods = $obj->getMethods(ReflectionMethod::IS_PUBLIC); foreach ($methods as $method) { $argsCount = $method->getNumberOfParameters(); $args = array(); for ($i = 0; $i < $argsCount; $i++) { $args[] = self::getRand(); } if ($method->isStatic()) { $result = call_user_func(array($className, $method->getName()), $args); } else { $obj = new $className(); $result = call_user_func(array($obj, $method->getName()), $args); } } } } }
рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
class badWritenClass { public function testFunc1($param) { echo count($param),PHP_EOL; } public function testFunc2($param) { $calcVar = $param['test'] / $param['test2'] * 50; echo $calcVar ,PHP_EOL; } public static function goodWritenFunc($param) { if (is_array($param) && isset($param['name'])) { echo 'Hello ', $param['name'],PHP_EOL; } else { echo 'Hello Guest!',PHP_EOL; } } } function testFunc1($param) { echo count($param) ,PHP_EOL; } function testFunc2($param) { $calcVar = $param['test'] + $param['test2'] * 50; echo $calcVar ,PHP_EOL; } tester::setErrorHandler(); tester::$allowedTytes = array(tester::T_INTEGER, tester::T_STRING, tester::T_ARRAY, tester::T_OBJECT, tester::T_BOOLEAN, tester::T_FUNCTION, tester::T_NULL); testFunc1(tester::getRand()); testFunc2(tester::getRand()); tester::test('badWritenClass');
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдкрджреНрдзрддрд┐ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ "рд╕рд╛рдЗрдХрд┐рд▓" рдХрд╣рд╛ рд╣реИ, рдЙрд╕реЗ рдлрд╝рдЬрд╝рд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ рдХреА рдПрдХ рдЬреЛрдбрд╝реА:
www.vr-online.ru/?q=content/fuzzing-tehnologija-ohoty-za-bagami-752wiki.xakep.ru/Default.aspx?Page=fuzzing&AspxAutoDetectCookieSupport=1ps рд╣рдм рдкрд░ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд╡рд┐рд╖рдп, рдереЛрдбрд╝рд╛ рдЧрдиреНрджрд╛ рдФрд░ рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕рд╛рд░реА рдЧрд▓рддрд┐рдпрд╛рдБ, рдХреГрдкрдпрд╛ рдЬреНрдпрд╛рджрд╛ рдордд рдорд╛рд░реЛ, рдореИрдВ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреВрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдмрдирд╛рдКрдВрдЧрд╛ред
upd рдиреЗ vr-online.ru рдХрд╛ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рд╛
upd2 рдиреЗ рд╡рд░реНрдЧ рдХреЛ рдереЛрдбрд╝рд╛ рд░реАрдХреНрд░рд┐рдПрдЯ рдХрд┐рдпрд╛, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛