SQL注入攻击原理以及基本方法

简介:

一、SQL注入的概述

定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

                                    为了更直观的让大家了解到sql注入的原理,贴上一张sql注入攻击示意图

●SQL注入威胁表现形式可以体现为以下几点:

        ●绕过认证,获得非法权限

        ●猜解后台数据库全部的信息

        ●注入可以借助数据库的存储过程进行提权等操作

●SQL注入攻击的典型手段

        ●判断应用程序是否存在注入漏洞

        ●收集信息、并判断数据库类型

        ●根据注入参数类型,重构SQL语句的原貌

        ●猜解表名、字段名

        ●获取账户信息、攻击web或为下一步攻击做准备

二、SQL注入的简单例子

1.SQL注入漏洞的几种判断方法

        ①http://www.heetian.com/showtail.asp?id=40'

        ②http://www.heetian.com/showtail.asp?id=40 and 1=1

        ③http://www.heetian.com/showtail.asp?id=40 and 1=2

        如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。

        如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。

2.收集信息、判断数据库类型

        从其返回的信息中可以判断下数据库的类型,更多可能可以知道部分数据库中的字段以及其他有用信息,为下一步攻击提供铺垫。

3.根据注入参数类型,重构SQL语句的原貌

        ①ID=40 这类注入的参数是数字型,那么SQL语句的原貌大致是:Select*from 表名 where 字段=40

        ②name=电影 这类注入的参数是字符型,SQL语句原貌大致是:Select*from 表名 where 字段=‘电影’

        ③搜索时没有过滤参数的,如keyword=关键字,SQL语句原貌大致是:Select*from 表名 where 字段 like ‘%关键字%’

4.猜解表名、字段名(直接将SQL语句添加到URL后)

        ①and exists(select*from 表名)

        如果页面没有任何变化,说明附加条件成立,那么就是说明猜解的表名正确,反之,就是不存在这个表,接下来就继续猜解,知道正确

        ②and exists(select 字段 from 表名)

        方法原理同上

        ③猜解字段内容(利用以上猜解出的表名和字段名 方法较古老且麻烦)

        ●猜解字段内容的长度

        (select top 1 len(字段名)from 表名)>0 直至猜解到>n不成立的时候,得出字段的长度为:n+1。

        ●得到长度后,猜解具体的内容

        (select top 1 asc(mid(username,1,1))from 表名)>0直到>m不成立时,就可以猜解出ASCII码值了。


防范sql注入攻击

 虚拟主机server段中加入如下配置:

  

 if ($request_uri ~*(.*)(insert|select|delete|update|count|*|%|master|truncate|declare|'|;|and|or|(|)|exec)(.*)$) { 

rewrite ^(.*) 11 redirect; 

}


 当然我们也可以返回404错误: 

 代码如下:

if ($request_uri ~*(.*)(insert|select|delete|update|count|*|%|master|truncate|declare|'|;|and|or|(|)|exec)(.*)$) {

return 404

}

本文转自写个博客骗钱博客51CTO博客,原文链接http://blog.51cto.com/dadonggg/1954655如需转载请自行联系原作者


菜鸟东哥

相关文章
|
6月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
9月前
|
SQL 安全 关系型数据库
SQL注入之万能密码:原理、实践与防御全解析
本文深入解析了“万能密码”攻击的运行机制及其危险性,通过实例展示了SQL注入的基本原理与变种形式。文章还提供了企业级防御方案,包括参数化查询、输入验证、权限控制及WAF规则配置等深度防御策略。同时,探讨了二阶注入和布尔盲注等新型攻击方式,并给出开发者自查清单。最后强调安全防护需持续改进,无绝对安全,建议使用成熟ORM框架并定期审计。技术内容仅供学习参考,严禁非法用途。
1415 0
|
8月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
594 18
|
8月前
|
SQL 存储 自然语言处理
SQL的解析和优化的原理:一条sql 执行过程是什么?
SQL的解析和优化的原理:一条sql 执行过程是什么?
SQL的解析和优化的原理:一条sql 执行过程是什么?
|
8月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
226 9
|
9月前
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
322 12
|
9月前
|
SQL 人工智能 自然语言处理
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
|
9月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
SQL 安全 Java
除了Flask框架,还有哪些框架能防止SQL注入攻击?
这些框架都在安全方面有着较好的表现,通过它们的内置机制和安全特性,可以有效地降低 SQL 注入攻击的风险。然而,无论使用哪个框架,开发者都需要具备良好的安全意识,正确配置和使用框架提供的安全功能,以确保应用的安全可靠。同时,持续关注安全更新和漏洞修复也是非常重要的。
566 162
|
10月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
261 16