' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '' ); if( $result && mysqli_num_rows( $result ) == 1 ) { // Get users details $row = mysqli_fetch_assoc( $result ); $avatar = $row["avatar"]; // Login successful $html .= "
Welcome to the password protected area {$user}
"; $html .= ""; } else { // Login failed $html .= ""; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); } ?> low级别是一个简单的登录的代码,仅仅对密码进行了MD5加密。没有任何过滤。
Username and/or password incorrect.
四种暴力破解方式的区别:
一个字典,两个参数,先匹配第一项,再匹配第二项【sniper】
一个字典,两个参数,同用户名同密码【battering ram】
两个字典,两个参数,同行匹配,短的截止【pitch fork】
两个字典,两个参数,交叉匹配,所有可能【cluster bomb】
medium' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '' ); if( $result && mysqli_num_rows( $result ) == 1 ) { // Get users details $row = mysqli_fetch_assoc( $result ); $avatar = $row["avatar"]; // Login successful $html .= "
Welcome to the password protected area {$user}
"; $html .= ""; } else { // Login failed sleep( 2 ); $html .= ""; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); } ?>
Username and/or password incorrect.
medium级别的代码和low级别的代码比较不同点在于加了层mysql_real_escape_string( );
**mysql_real_excape_string()**函数转义sql语句中使用的字符串中的特殊字符,防止sql注入.
同时对密码进行了md5加密,杜绝通过参数password进行sql注入的可能性.但是没有加
入有效的防爆破机制.
由此可见该函数的功能为防止SQL Injection攻击,
1、也就是你必须验证用户的输入
2、操作数据的时候避免不必要的字符导致错误
hign' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '' ); if( $result && mysqli_num_rows( $result ) == 1 ) { // Get users details $row = mysqli_fetch_assoc( $result ); $avatar = $row["avatar"]; // Login successful $html .= "
Welcome to the password protected area {$user}
"; $html .= ""; } else { // Login failed sleep( rand( 0, 3 ) ); $html .= ""; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); } // Generate Anti-CSRF token generateSessionToken(); ?>
Username and/or password incorrect.
high级别的代码和medium级别相比又加了stripslashes()函数
对于这个可以先弱口令、万能密码测试。如果无果,则进行暴力破解。
mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符;
stripslashes() 函数删除由 addslashes() 函数添加的反斜杠,可用于清理从数据库中或者从 HTML表单中取回的数据;
破解过程
通过抓包,我们发现了需要提交四个参数:username,password,login,user_token
每次服务器返回的登陆页面中都会包含一个随机的user_token的值,用户每次登录时都要将user_token一起提交。服务器收到请求后,会优先做token的检查
可以尝试使用python脚本,使用爬虫将服务器每次返回的user_token抓取到



