首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建盲SQL注入漏洞

创建盲SQL注入漏洞
EN

Stack Overflow用户
提问于 2018-12-02 11:18:04
回答 1查看 483关注 0票数 1

为了测试目的,我正在建立一个带有SQL注入漏洞的网站。但是,我只想配置一个盲SQL注入。我有以下PHP代码:

代码语言:javascript
复制
<?php
    $news_id = $_GET["id"];

    $conn = mysqli_connect("localhost","root","","db");
    $result = mysqli_query($conn,"SELECT * FROM News WHERE id='" . $_GET["id"] . "'");
    $count  = mysqli_num_rows($result);
    if($count==0) {
            $message = "Invalid ID";
            header( 'Location: id_not_found.html' );
    } else {
            $message = "Correct ID!";
            $m = mysqli_fetch_assoc($result);
    }
?>


<html>
    <head>
            <link rel="stylesheet" type="text/css" href="mystyle.css">
            <title>NEWS</title>
    </head>
    <body>
            <h1>NOTICIA</h1>
            <div style="background-color:#c6c6c6;color:black;padding:20px;">
                    <h2><?php echo $m["title"]; ?></h2>
                    <p><?php echo $m["body"]; ?></p>
                    <p><?php echo $m["datetime"]; ?></p>
            </div>
    </body>
</html>

在我看来,这段代码似乎只有一个盲SQL漏洞,因为它只打印News Table列的名称,所以如果用户插入某种查询,结果就不会被打印出来。

然而,当我做这个注射时:

代码语言:javascript
复制
http://localhost:8080/web_base_de_datos_asig/check_newsid.php?id=-1' UNION SELECT NULL,NULL,user(),NULL-- kyGC

打印当前用户是因为查询返回到下一个数组:

代码语言:javascript
复制
Array ( [0] => [id] => [1] => [title] => [2] => root@localhost [body] => root@localhost [3] => [datetime] => ) 

那么,我如何才能只编程一个盲SQL注入呢?我真的不知道该怎么做。

更新我写了一个肮脏的解决方案。然而,它是有效的(但我想得到另一个更有趣的解决方案)。事实是,当数据被返回时,我会对数据库执行另一个查询,请求每个参数。如果存在,则可以打印数据,因为它只包含真正的信息(例如,不包含db用户名)。

代码语言:javascript
复制
   $result2 = mysqli_query($conn,"SELECT * FROM News WHERE title='" . $m["title"] . "' and body='" . $m["body"] . "' and datetime='" . $m["datetime"] . "'");
   $count2  = mysqli_num_rows($result2);
EN

回答 1

Stack Overflow用户

发布于 2018-12-17 09:07:06

您正在将错误处理与有效负载混淆。盲目SQL注入并不意味着您不能使用union子句来利用它,这意味着如果发生错误(例如,如果注入apostrphe ),您将不会看到任何错误消息或任何sign 的迹象。例如,您将看到一个常规的“不正确的ID”或“未找到结果”消息。如果您的目标是不向用户返回任何文本结果的SQL注入,则目标是二进制SQL注入,例如:登录屏幕。请记住,二进制SQL注入和文本(文本返回) SQL注入都可能是盲目的或描述性的(错误将被打印回用户)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53579691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档