Brute Force_low
<?php /*isset函数在php中用来检测变量是否设置,该函数返回的是布尔类型的值,即true/false*/ if( isset( $_GET[ 'Login' ] ) ) { // Get username $user = $_GET[ 'username' ]; // Get password $pass = $_GET[ 'password' ]; $pass = md5( $pass ); // Check the database $query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; //SQL注入漏洞语句 //$query = "SELECT * FROM `users` WHERE user = '$user' 'or '1' ='1'# AND password = '$pass';"; //is_object() 函数用于检测变量是否是一个对象。如果指定变量为对象,则返回 TRUE,否则返回 FALSE。 //die() 函数输出一条消息,并退出当前脚本, //die(status)规定在退出脚本之前写入的消息或状态号。状态号不会被写入输出 //如果 status 是字符串,则该函数会在退出前输出字符串。 //如果 status 是整数,这个值会被用作退出状态。退出状态的值在 0 至 254 之间。退出状态 255 由 PHP 保留,不会被使用。状态 0 用于成功地终止程序。 //mysqli_error(connection) 函数返回最近调用函数的最后一个错误描述。connection,必需。规定要使用的 MySQL 连接。 //mysqli_connect_error() 函数返回上一次连接错误的错误描述。返回一个描述错误的字符串。如果没有错误发生则返回 NULL。 $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); /********************************************************************************************* mysqli_query------执行某个针对数据库的查询。针对其他成功的查询,将返回 TRUE。如果失败,则返回 FALSE。 mysqli_query(connection,query,resultmode); connection:(必需。规定要使用的 MySQL 连接。) query:(必需,规定查询字符串。) resultmode(可选。一个常量。可以是下列值中的任意一个: MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个) MYSQLI_STORE_RESULT(默认)) **************************************************************************************/ if( $result && mysqli_num_rows( $result ) == 1 ) { //mysqli_num_rows(result) 函数返回结果集中行的数量。 //result 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。 // Get users details 获取用户详细信息 $row = mysqli_fetch_assoc( $result ); //mysqli_fetch_assoc(result) 函数从结果集中取得一行作为关联数组。 //该函数返回的字段名是区分大小写的。 //result 必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。 $avatar = $row["avatar"]; // Login successful echo "<p>Welcome to the password protected area {$user}</p>"; echo "<img src=\"{$avatar}\" />"; } else { // Login failed echo "<pre><br />Username and/or password incorrect.</pre>"; } ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); } //is_null() 函数用于检测变量是否为 NULL。如果指定变量为 NULL,则返回 TRUE,否则返回 FALSE。 //mysqli_close(connection) 函数关闭先前打开的数据库连接。必需。connection 规定要关闭的 MySQL 连接。 ?>
可以看到,服务器只是验证了参数Login是否被设置(isset函数在php中用来检测变量是否设置,该函数返回的是布尔类型的值,即true/false),没有任何的防爆破机制,且对参数username、password没有做任何过滤,存在明显的sql注入漏洞。