zoukankan      html  css  js  c++  java
  • 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注入漏洞。

  • 相关阅读:
    Makefile目标汇总和变量的高级用法
    make命令详解
    再议HTML Clipboard Format
    编写一个Open Live Writer的VSCode代码插件
    win7安装ps cc 2019切片闪退
    redis cluster 数据迁移
    linux服务器两块网卡路由优先级冲突 Metric值(转)
    电梯怎么测,附常见的测试用例
    vue中watch属性深度监听,监听数组或多维数组下层
    前端JS base64与图片互转
  • 原文地址:https://www.cnblogs.com/guiguxiaosheng/p/9189137.html
Copyright © 2011-2022 走看看