brute force(暴力破解)
发现medium级别直接SQL注入,不行了,
看源码,相比于low级别,medium级别多了这样几行代码:
$user = ((isset($GLOBALS["___mysqli_ston"]) &&is_object($GLOBALS["___mysqli_ston"])) ?
mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $user ) :
((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call!
This code does not work.", E_USER_ERROR)) ? "" : ""));
$pass = ((isset($GLOBALS["___mysqli_ston"]) && is_object($GLOBALS["___mysqli_ston"])) ?
mysqli_real_escape_string($GLOBALS["___mysqli_ston"], $pass ) :
((trigger_error("[MySQLConverterToo] Fix the mysql_escape_string() call!
This code does not work.", E_USER_ERROR)) ? "" : ""));
函数解读
$GLOBALS[“___mysqli_ston”]这只是一个自定义全局变量可以不用在意
isset
(PHP 4, PHP 5, PHP 7)
isset — 检测变量是否已设置并且非 NULL
说明
bool isset ( mixed var[,mixed … ] )
检测变量是否设置,并且不是 NULL。is_object
(PHP 4, PHP 5, PHP 7)
is_object — 检测变量是否是一个对象
描述
bool is_object ( mixed $var )mysql_real_escape_string
(PHP 4 >= 4.3.0, PHP 5)
mysql_real_escape_string — 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集
Warning本扩展自 PHP 5.5.0