DVWA关卡7:SQL Injection(SQL注入)

本文详细介绍了DVWA中SQL注入的四个难度级别:Low、Medium、High和Impossible,包括每个级别的防护措施、漏洞利用方法以及示例注入语句。重点讨论了SQL注入的危害、检测和防范策略,推荐使用安全查询方式防止此类漏洞。
摘要由CSDN通过智能技术生成

目录

Low

Medium

High

Impossible


简介:
        SQL注入漏洞是一种常见的漏洞。利用SQL注入漏洞去查询记录,会造成数据泄露,如果泄露的数据中含有管理员密码,还可能导致拖库发生。

功能特点:
        SQL注入漏洞往往是因为对用户输入过滤不严。SQL注入漏洞多是高危漏洞,会导致严重的后果。验证漏洞时,为了提高效率,经常会先尝试使用sqlmap自动化工具辅助判断,但手工注入比自动化工具可以发现更多的注入点。

各防护等级简介:
        low等级,对SQL注入行为毫无设防;
        medium等级,对SQL注入行为防护不足,防护做法欠考虑;
        hight等级,对SQL注入行为有一定防护,但有疏忽;
        impossible等级,对SQL注入行为正确防护。

基础知识补充:

        整型注入与字符型区别:
        当输入的内容为数字时,可能存在整型注入,也可能存在字符型注入。区别在于,整型不需要单引号来闭合,而字符型需要通过单引号来闭合的。可以简单的理解为,不需要考虑单引号如何闭合则为整型注入,其他情况均是字符型。

        information_schema:信息数据库,保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表名,表列的数据类型与访问权限等。
        mysql_real_escape_string():实现转义7种危险字符。SQL 语句字符串中的特殊字符,如输入单引号’则处理时会在其前面加上右斜杠\来进行转义,如果语句错误则输出相应的错误信息。其中受影响的字符如下:\x00  \n  \r  \  '  "  \x1a


        记住下面几个词的含义及用法。
        几个常出现的单词:
        1.information_schema.tables:存储着MySql中的所有表;
        2.information_schema.columns:存储着MySql中的所有列;
        3.table_schema是数据库的名称;
        4.table_name是具体的表名;
        5.table_type指的是表的类型;
        6.group_concat(0x3e,xxx):连接多个字段成一个字段;
        7.union操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

Low

源码:

<?php

if( isset( $_REQUEST[ 'Submit' ] ) ) {
    // Get input
    $id = $_REQUEST[ 'id' ];

    switch ($_DVWA['SQLI_DB']) {
        case MYSQL:
            // Check database
            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
            $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>' );

            // Get results
            while( $row = mysqli_fetch_assoc( $result ) ) {
                // Get values
                $first = $row["first_name"];
                $last  = $row["last_name"];

                // Feedback for end user
                echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";
            }

            mysqli_close($GLOBALS["___mysqli_ston"]);
            break;
        case SQLITE:
            global $sqlite_db_connection;

            #$sqlite_db_connection = new SQLite3($_DVWA['SQLITE_DB']);
            #$sqlite_db_connection->enableExceptions(tru
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值