dvwa之SQL盲注

文章详细介绍了SQL注入的概念,包括如何通过输入恶意SQL命令欺骗服务器执行非预期操作。讨论了两种盲注类型——布尔盲注和时间盲注,并提供了针对这两种情况的不同处理方法。通过实例展示了如何利用注入技术探测数据库信息,如数据库名、表名和字段名,以及如何通过时间延迟判断查询是否成功。

1.理论知识

SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

SQL盲注和SQL注入的区别就是盲注它不会有完整的回显,这里分为两种,一种是布尔盲注,另一种是时间盲注。

布尔盲注:会根据我们输入的信息返回true和fales,不会有我们之前SQL注入的报错信息。

时间盲注:没有任何回显,无论输入任何值,返回情况都会按正常的来处理

针对以上两种情况我们会用不同的方法进行处理,具体操作下面会进行讲解。

2.低级

先查看源码

<?php

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

    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 ); // Removed 'or die' to suppress mysql errors

            $exists = false;
            if ($result !== false) {
                try {
                    $exists = (mysqli_num_rows( $result ) > 0);
                } catch(Exception $e) {
                    $exists = false;
                }
            }
            ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res);
            break;
        case SQLITE:
            global $sqlite_db_connection;

            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
            try {
                $results = $sqlite_db_connection->query($query);
                $row = $results->fetchArray();
                $exists = $row !== false;
            } catch(Exception $e) {
                $exists = false;
            }

            break;
    }

    if ($exists) {
        // Feedback for end user
        echo '<pre>User ID exists in the database.</pre>';
    } else {
        // User wasn't found, so the page wasn't!
        header( $_SERVER[ 'SERVER_PROTOCOL' ] . ' 404 Not Found' );

        // Feedback for end user
        echo '<pre>User ID is MISSING from the database.</pre>';
    }

}

?> 

通过 query="SELECTfirstname,lastnameFROMusersWHEREuserid=′query = "SELECT first_name, last_name FROM users WHERE user_id = 'query

靶场SQL是指在DVWA(Damn Vulnerable Web Application)这个靶场中进行的SQL入攻击。靶场中有一个名为dvwa数据库,我们可以通过一系列的入语句来探测这个数据库中的表的数量和表名的长度。 首先,通过布尔的方式,我们可以使用一些条件语句来判断表的数量。比如,我们可以使用以下语句来判断表的数量是否为1: ```sql 1' and (select count(table_name) from information_schema.tables where table_schema=database())=1# ``` 如果返回结果为真,则说明表的数量为1。同样地,我们可以使用以下语句来判断表的数量是否大于2: ```sql 1' and (select count(table_name) from information_schema.tables where table_schema=database())>2# ``` 如果返回结果为假,则说明表的数量大于2。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [DVWA——SQL(全等级)](https://blog.youkuaiyun.com/qq_45833260/article/details/125762606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [DVWAsql入——](https://blog.youkuaiyun.com/Williamanddog/article/details/128404430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值