SQL注入(1)--判断是否存在SQL注入漏洞

这篇具有很好参考价值的文章主要介绍了SQL注入(1)--判断是否存在SQL注入漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是SQL注入

不论是学习后端开发/数据库/网络安全,SQL注入安全隐患反复被提起
到底什么是SQL?

维基百科的定义:
SQL注入(1)--判断是否存在SQL注入漏洞

(1)什么是SQL?
SQL是用来操控数据库的语言
SQL注入(1)--判断是否存在SQL注入漏洞
(2)举一个例子,现在我们要查询电影“长津湖”的票房数据:
SQL注入(1)--判断是否存在SQL注入漏洞
SQL注入(1)--判断是否存在SQL注入漏洞
先想象一下开发人员是如何书写代码从数据库中拿到数据的:
SQL注入(1)--判断是否存在SQL注入漏洞
作为一名黑客如何思考?
SQL注入(1)--判断是否存在SQL注入漏洞
SQL注入(1)--判断是否存在SQL注入漏洞

SQL注入靶场练习- DVWA(1)

【1】首先将security调为low:
SQL注入(1)--判断是否存在SQL注入漏洞
(记住要点击“submit”)

【2】然后挑战模块SQL Injection
SQL注入(1)--判断是否存在SQL注入漏洞

首先尝试正常的
SQL注入(1)--判断是否存在SQL注入漏洞

【3】尝试查看源码:
SQL注入(1)--判断是否存在SQL注入漏洞

SQL注入(1)--判断是否存在SQL注入漏洞
我将源码粘贴到了下面:


SQL Injection Source
vulnerabilities/sqli/source/low.php
<?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(true);

            $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";
            #print $query;
            try {
                $results = $sqlite_db_connection->query($query);
            } catch (Exception $e) {
                echo 'Caught exception: ' . $e->getMessage();
                exit();
            }

            if ($results) {
                while ($row = $results->fetchArray()) {
                    // 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>";
                }
            } else {
                echo "Error in fetch ".$sqlite_db->lastErrorMsg();
            }
            break;
    } 
}

?>



内容非常多,但是只需要关注SQL语句select
SQL注入(1)--判断是否存在SQL注入漏洞

  $query  = "SELECT first_name, last_name FROM users WHERE user_id = '$id';"; 

关注:
SELECT first_name, last_name FROM users WHERE user_id = ‘$id’;

$id就是用户输入的 内容。

判断有没有SQL注入漏洞:
SQL注入(1)--判断是否存在SQL注入漏洞
用户输入的数据为1’ and 1=1 #
这时候SQL语句发生了变化,在原有查询完成的 基础上会判断1 = 1(这显然是正确的),如果判断正确则才会有输出
#作用是注释(移除)后续SQL语句,去掉后面可能会造成影响的 SQL语句

SQL注入(1)--判断是否存在SQL注入漏洞

SQL注入(1)--判断是否存在SQL注入漏洞
用户输入的数据为1’ and 1=2 #
这时候SQL语句在原有查询完成后会有判断 1=2(这明显是错误的),如果判断正确才会有输出

SQL注入(1)--判断是否存在SQL注入漏洞

这时候没有任何回显了,说明判断是错误的,这时候确定存在SQL注入漏洞

总结:
两次尝试1=1正常输出,1=2错误输出,证明SQL语句生效,存在SQL注入漏洞
文章来源地址https://www.toymoban.com/news/detail-451797.html

到了这里,关于SQL注入(1)--判断是否存在SQL注入漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MybatisPlus存在 sql 注入漏洞(CVE-2023-25330)解决办法

    MyBatis-Plus TenantPlugin 是 MyBatis-Plus 的一个为多租户场景而设计的插件,可以在 SQL 中自动添加租户 ID 来实现数据隔离功能。 MyBatis-Plus TenantPlugin 3.5.3.1及之前版本由于 TenantHandler#getTenantId 方法在构造 SQL 表达式时默认情况下未对 tenant(租户)的 ID 值进行过滤,当程序启用了 Te

    2024年02月07日
    浏览(27)
  • 天擎终端安全管理系统clientinfobymid存在SQL注入漏洞

    产品简介 奇安信天擎终端安全管理系统是面向政企单位推出的一体化终端安全产品解决方案。该产品集防病毒、终端安全管控、终端准入、终端审计、外设管控、EDR等功能于一体,兼容不同操作系统和计算平台,帮助客户实现平台一体化、功能一体化、数据一体化的终端安全

    2024年02月03日
    浏览(44)
  • 【1day】复现任我行协同CRM存在SQL注入漏洞

    注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘  四、漏洞复现 

    2024年02月12日
    浏览(33)
  • Jeecg-Boot 存在前台SQL注入漏洞(CVE-2023-1454)

    微信公众号搜索:南风漏洞复现文库 南风网络安全公众号首发 eecgBoot是一款基于BPM的低代码平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant DesignVue,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发#x

    2024年02月06日
    浏览(112)
  • [SQL Server 2008R2] 有关于判断表、字段、存过等元素是否存在相关SQL写法

    查询普通表是否存在可以使用object_id函数,下面的例子是查询表“t_test”是否存在之后从而进行其他的DLL操作:   临时表同样可以用object_id但是表名要记得加上库名和表空间: 或者 以上这个条件自行发挥,我这边使用的是like语句,判断的是只要是#temp开头的临时表存在。 有

    2023年04月26日
    浏览(39)
  • MybatisPlus <= 3.5.3.1 TenantPlugin 组件 存在 sql 注入漏洞(CVE-2023-25330)

    MyBatis-Plus TenantPlugin 是 MyBatis-Plus 的一个为多租户场景而设计的插件,可以在 SQL 中自动添加租户 ID 来实现数据隔离功能。 MyBatis-Plus TenantPlugin 3.5.3.1及之前版本由于 TenantHandler#getTenantId 方法在构造 SQL 表达式时默认情况下未对 tenant(租户)的 ID 值进行过滤,当程序启用了 Te

    2024年02月03日
    浏览(34)
  • Linux发行版Gentoo被发现有漏洞,在SQL注入方面存在安全风险

    近日有消息表明,Gentoo Linux发行版中存在漏洞CVE-2023-28424,并且极有可能被黑客利用该漏洞进行SQL注入攻击。 据悉,研究人员从 GentooLinux的Soko搜索组件中找到了这个漏洞,并且该漏洞的CVSS风险评分为 9.1,属于特别重大漏洞,GentooLinux开发团队已经于漏洞曝出24小时内进行了修

    2024年02月12日
    浏览(38)
  • C# .NET SQL sugar中 IsAny进行根据条件判断数据是否存在 IsAny的使用

    首先确保你的Service层继承的表名 控制器中使用IsAny进行根据条件判断数据是否存在

    2024年01月20日
    浏览(34)
  • 渗透测试模拟(使用sqlmap进行sql注入漏洞判断,利用该漏洞进行挂马)

    环境:对某网站进行渗透测试。 (PHP+Mysql开发的网站,用于WEB漏洞教学和检测的) 工具:sqlmap(Kali Linux中自带or官网下载Windows版) 此次实验所涉及的sqlmap参数: 一、信息收集 二、漏洞挖掘 (1)判断网站是否存在sql注入漏洞 使用工具,sqlmap: sqlmap -u \\\"目标网站地址\\\" --ba

    2024年02月15日
    浏览(36)
  • 网御ACM上网行为管理系统bottomframe.cgi接口存在SQL注入漏洞 附POC

    免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 微信公众号搜索:南风漏洞复现文库 该文

    2024年02月10日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包