Oracle学习总结(6)—— SQL注入技术

不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动。在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一。

SQL注入基本介绍

结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言。1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

SQL注入(SQL Injection)是一种常见的WEB安全漏洞,攻击者利用这个问题,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

SQL注入产生原因

针对SQL注入的攻击行为可描述为通过在用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。其成因可以归结为以下两个原因叠加造成的:

1. 程序编写者在处理应用程序和数据库交互时,使用字符串拼接的方式构造SQL语句

2. 未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中

SQL注入攻击方式

SQL注入的攻击方式根据应用程序处理数据库返回内容的不同,可以分为可显注入、报错注入和盲注: 1、可显注入:攻击者可以直接在当前界面内容中获取想要获得的内容 2、报错注入:数据库查询返回结果并没有在页面中显示,但是应用程序将数据库报错信息打印到了页面中,所以攻击者可以构造数据库报错语句,从报错信息中获取想要获得的内容

3、盲注:数据库查询结果无法从直观页面中获取,攻击者通过使用数据库逻辑或使数据库库执行延时等方法获取想要获得的内容

如何进行SQL注入攻击

SQL注入攻击是非常令人讨厌的安全漏洞,是所有的web开发人员,不管是什么平台,技术,还是数据层,需要确信他们理解和防止的东西。不幸的是,开发人员往往不集中花点时间在这上面,以至他们的应用,更糟糕的是,他们的客户极其容易受到攻击。下面的三部曲从漏洞发现到漏洞确认,再到漏洞利用,最后漏洞防御四个方面的技术做了详细的讲解。

SQL注入三部曲:

1、 渗透攻防Web篇-SQL注入攻击初级

http://bbs.ichunqiu.com/thread-9518-1-1.html

2、 渗透攻防Web篇-SQL注入攻击中级

http://bbs.ichunqiu.com/thread-9668-1-1.html

3、 渗透攻防Web篇-SQL注入攻击高级

http://bbs.ichunqiu.com/thread-10093-1-1.html

SQL注入经验与技巧

经验很重要,成功往往在多次失败之后。要想减少失败,就多看文章积累技巧吧,下面集合了论坛相关技术文章,从各个方面介绍了SQL注入。

1、 SQL学习笔记

http://bbs.ichunqiu.com/thread-2274-1-1.html

2、 人人都可学会的MySQL高级注射技巧

http://bbs.ichunqiu.com/thread-10359-1-1.html

3、 详解MySQL注射

http://bbs.ichunqiu.com/thread-10222-1-1.html

4、 浅谈.NET应用程序SQL注入

http://bbs.ichunqiu.com/thread-7636-1-1.html

5、 在SQL注入中使用DNS获取数据

http://bbs.ichunqiu.com/thread-10005-1-1.html

6、 WEB安全系列之如何挖掘sql注入漏洞(二次注入)

http://bbs.ichunqiu.com/thread-9193-1-1.html

7、深入了解php+mysql注入及修补!

http://bbs.ichunqiu.com/thread-10090-1-1.html

8、技巧整合 - mysql注入点的另类利用

http://bbs.ichunqiu.com/thread-9903-1-1.html

9、浅谈sql注入中的Post注入

http://bbs.ichunqiu.com/thread-7762-1-1.html

相关教程

工具教程篇:

1、 SQLMAP注入教程-11种常见SQLMAP使用方法详解

http://bbs.ichunqiu.com/thread-10583-1-1.html

2、 SQLMAP tamper WAF 绕过脚本列表注释

http://bbs.ichunqiu.com/thread-10387-1-1.html

3、零基础实战审计SQL注射漏洞

http://bbs.ichunqiu.com/thread-10284-1-1.html

4、被动式SQL注入神器总结

http://bbs.ichunqiu.com/thread-8428-1-1.html

5、利用Burpsuit学习注入工具语句

http://bbs.ichunqiu.com/thread-8319-1-1.html

代码审计篇 :

1、 PHP代码审计SQL注入

http://bbs.ichunqiu.com/thread-11308-1-1.html

2、Joomla 3.xSql注入漏洞分析

http://bbs.ichunqiu.com/thread-1689-1-1.html

3、 浅谈JSP安全开发之SQL注入

http://bbs.ichunqiu.com/thread-9958-1-1.html

4、 代码审计之绕过addslashes总结

http://bbs.ichunqiu.com/thread-10899-1-1.html

相关技术及文档:

1、 mysql数据库学习

http://bbs.ichunqiu.com/thread-11248-1-1.html

2、 SQL注入自学指南

http://bbs.ichunqiu.com/thread-2141-1-1.html

3、 mssql注入经常使用的命令

http://bbs.ichunqiu.com/thread-3221-1-1.html

专业的视频教程-告别文字的枯燥

1、 SQL注入漏洞 -视频+实验:活学活用

http://www.ichunqiu.com/course/405

2、 SQL注入漏洞审计及漏洞挖掘

http://www.ichunqiu.com/course/1325

3、 科普类-SQL(结构化查询语言)注入攻击的好处

  • 改变SQL(结构化查询语言)代码来掩盖你的攻击

  • 进行SQL(结构化查询语言)注入攻击

  • 解释一个SQL(结构化查询语言)注入攻击

http://www.ichunqiu.com/course/51849 

4、SQL注入漏洞发现及修补技术(有攻有防才是王道)

http://www.ichunqiu.com/course/77 

SQL注入工具

1、SQLmap

sqlmap 是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

2、SSQLInjection

超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入。目前支持Bool型盲注、错误显示注入、Union注入,支持Access、MySQL5以上版本、SQLServer、Oracle等数据库。采用C#开发,底层采用Socket发包进行HTTP交互,极大的提升了发包效率,相比C#自带的HttpWebRequest速度提升2-5倍。支持盲注环境获取世界各国语言数据,直接秒杀各种注入工具在盲注环境下无法支持中文等多字节编码的数据。

3、Pangolin

Pangolin是一款帮助渗透测试人员进行SQL注入测试的安全工具。它具备友好的图形界面以及支持测试几乎所有数据库,并能够通过一系列非常简单的操作,达到最大化的攻击测试效果。

收费的,所以不放项目地址。

4、 Havij

Havij是一款自动化的SQL注入工具,它不仅能够自动挖掘可利用的SQL查询,还能够识别后台数据库类型、检索数据的用户名和密码hash、转储表和列、从数据库中提取数据,甚至访问底层文件系统和执行系统命令。

收费的,所以不放项目地址。

5、The Mole

The Mole是一款开源的自动化SQL注入工具,其可绕过IPS/IDS(入侵防御系统/入侵检测系统)。只需提供一个URL和一个可用的关键字,它就能够检测注入点并利用。The Mole可以使用union注入技术和基于逻辑查询的注入技术。The Mole攻击范围包括SQL Server、MySQL、Postgres和Oracle数据库。

6、SQLNinja

sqlninja是一款用perl写的一个专门针对Microsoft SQL Server的sql注入工具。和市面上其他的注入工具不同,sqlninja没有将精力用在跑数据库上,而是侧重于获得一个shell。

kali自带工具

7、BBQSQL

BBQSQL是一个Python编写的盲注工具(blind SQL injection framework),当你检测可疑的注入漏洞时会很有用。同时BBQSQL是一个半自动工具,允许客户自定义参数。

8、Jsql

JSQL是一款Java开发的轻量级远程服务器数据库注入漏洞测试工具,且免费、开源、跨平台 (Windows, Linux, Mac OS X, Solaris)。

项目地址: https://code.google.com/p/jsql-injection/downloads/list

9、Sqlsus

sqlsus是一个开放源代码的MySQL注入和接管工具,sqlsus使用perl编写,基于命令行界面。sqlsus可以获取数据库结构,注入你自己的SQL语句,从服务器下载文件,爬行web站点可写目录,上传和控制后门,克隆数据库等等

10、SQL Poizon

SQL Poizon是一个SQL注入扫描器,能够利用搜索引擎搜罗互联网上有SQL注入漏洞的网站。该工具内建浏览器和注入任务工具检查注入效果。SQL Poizon的界面非常简单,即使没有多少技术功底的人也能轻松上手。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第1章 数据库入门  1.1 数据库概述   1.1.1 数据库与数据库管理系统   1.1.2 数据库能做什么   1.1.3 主流数据库管理系统介绍  1.2 数据库基础概念   1.2.1 Catalog   1.2.2 表(Table)   1.2.3 列(Column)   1.2.4 数据类型(DataType)   1.2.5 记录(Record)   1.2.6 主键(PrimaryKey)   1.2.7 索引(Index)   1.2.8 表关联   1.2.9 数据库的语言——SQL   1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型   2.1.1 整数类型   2.1.2 数值类型   2.1.3 字符相关类型   2.1.4 日期时间类型   2.1.5 二进制类型  2.2 通过SQL语句管理数据表   2.2.1 创建数据表   2.2.2 定义非空约束   2.2.3 定义默认值   2.2.4 定义主键   2.2.5 定义外键   2.2.6 修改已有数据表   2.2.7 删除数据表   2.2.8 受限操作的变通解决方案 第3章 数据的增、删、改  3.1 数据的插入   3.1.1 简单的INSERT语句   3.1.2 简化的INSERT语句   3.1.3 非空约束对数据插入的影响   3.1.4 主键对数据插入的影响   3.1.5 外键对数据插入的影响  3.2 数据的更新   3.2.1 简单的数据更新   3.2.2 带WHERE子句的UPDATE语句   3.2.3 非空约束对数据更新的影响   3.2.4 主键对数据更新的影响   3.2.5 外键对数据更新的影响  3.3 数据的删除   3.3.1 简单的数据删除   3.3.2 带WHERE子句的DELETE语句 第4章 数据的检索  4.1 SELECT基本用法   4.1.1 简单的数据检索   4.1.2 检索出需要的列   4.1.3 列别名   4.1.4 按条件过滤   4.1.5 数据汇总   4.1.6 排序  4.2 高级数据过滤   4.2.1 通配符过滤   4.2.2 空值检测   4.2.3 反义运算符   4.2.4 多值检测   4.2.5 范围值检测   4.2.6 低效的“WHERE 1=1”  4.3 数据分组   4.3.1 数据分组入门   4.3.2 数据分组与聚合函数   4.3.3 HAVING语句  4.4 限制结果集行数   4.4.1 MySQL   4.4.2 MS SQL Server 2000   4.4.3 MS SQL Server 2005   4.4.4 Oracle   4.4.5 DB2   4.4.6 数据库分页  4.5 抑制数据重复  4.6 计算字段   4.6.1 常量字段   4.6.2 字段间的计算   4.6.3 数据处理函数   4.6.4 字符串的拼接   4.6.5 计算字段的其他用途  4.7 不从实体表中取的数据  4.8 联合结果集   4.8.1 简单的结果集联合   4.8.2 联合结果集的原则   4.8.3 UNION ALL   4.8.4 联合结果集应用举例 第5章 函数  5.1 数学函数   5.1.1 求绝对值   5.1.2 求指数   5.1.3 求平方根   5.1.4 求随机数   5.1.5 舍入到最大整数   5.1.6 舍入到最小整数   5.1.7 四舍五入   5.1.8 求正弦值   5.1.9 求余弦值   5.1.10 求反正弦值   5.1.11 求反余弦值   5.1.12 求正切值   5.1.13 求反正切值   5.1.14 求两个变量的反正切   5.1.15 求余切   5.1.16 求圆周率π值   5.1.17 弧度制转换为角度制   5.1.18 角度制转换为弧度制   5.1.19 求符号   5.1.20 求整除余数   5.1.21 求自然对数   5.1.22 求以10为底的对数   5.1.23 求幂  5.2 字符串函数   5.2.1 计算字符串长度   5.2.2 字符串转换为小写   5.2.3 字符串转换为大写   5.2.4 截去字符串左侧空格   5.2.5 截去字符串右侧空格   5.2.6 截去字符串两侧的空格   5.2.7 取子字符串   5.2.8 计算子字符串的位置   5.2.9 从左侧开始取子字符串   5.2.10 从右侧开始取子字符串   5.2.11 字符串替换   5.2.12 得到字符的ASCII码   5.2.13 得到一个ASCII码数字对应的字符   5.2.14 发音匹配度  5.3 日期时间函数   5.3.1 日期、时间、日期时间与时间戳   5.3.2 主流数据库系统中日期时间类型的表示方式   5.3.3 取得当前日期时间   5.3.4 日期增减   5.3.5 计算日期差额   5.3.6 计算一个日期是星期几   5.3.7 取得日期的指定部分  5.4 其他函数   5.4.1 类型转换   5.4.2 空值处理   5.4.3 CASE函数  5.5 各数据库系统独有函数   5.5.1 MySQL中的独有函数   5.5.2 MS SQL Server中的独有函数   5.5.3 Oracle中的独有函数 第6章 索引与约束  6.1 索引  6.2 约束   6.2.1 非空约束   6.2.2 唯一约束   6.2.3 CHECK约束   6.2.4 主键约束   6.2.5 外键约束 第7章 表连接  7.1 表连接简介  7.2 内连接(INNER JOIN)  7.3 不等值连接  7.4 交叉连接  7.5 自连接  7.6 外部连接   7.6.1 左外部连接   7.6.2 右外部连接   7.6.3 全外部连接 第8章 子查询  8.1 子查询入门   8.1.1 单值子查询   8.1.2 列值子查询  8.2 SELECT列表中的标量子查询  8.3 WHERE子句中的标量子查询  8.4 集合运算符与子查询   8.4.1 IN运算符   8.4.2 ANY和SOME运算符   8.4.3 ALL运算符   8.4.4 EXISTS运算符  8.5 在其他类型SQL语句中的子查询应用   8.5.1 子查询在INSERT语句中的应用   8.5.2 子查询在UPDATE语句中的应用   8.5.3 子查询在DELETE语句中的应用 第9章 主流数据库的SQL语法差异解决方案  9.1 SQL语法差异分析   9.1.1 数据类型的差异   9.1.2 运算符的差异   9.1.3 函数的差异   9.1.4 常用SQL的差异   9.1.5 取元数据信息的差异  9.2 消除差异性的方案   9.2.1 为每种数据库编写不同的SQL语句   9.2.2 使用语法交集   9.2.3 使用SQL实体对象   9.2.4 使用ORM工具   9.2.5 使用SQL翻译器  9.3 CowNewSQL翻译器   9.3.1 CowNewSQL支持的数据类型   9.3.2 CowNewSQL支持的SQL语法   9.3.3 CowNewSQL支持的函数   9.3.4 CowNewSQL的使用方法 第10章 高级话题  10.1 SQL注入漏洞攻防   10.1.1 SQL注入漏洞原理   10.1.2 过滤敏感字符   10.1.3 使用参数化SQL  10.2 SQL调优   10.2.1 SQL调优的基本原则   10.2.2 索引   10.2.3 全表扫描和索引查找   10.2.4 优化手法  10.3 事务   10.3.1 事务简介   10.3.2 事务的隔离   10.3.3 事务的隔离级别   10.3.4 事务的使用  10.4 自动增长字段   10.4.1 MySQL中的自动增长字段   10.4.2 MS SQL Server中的自动增长字段   10.4.3 Oracle中的自动增长字段   10.4.4 DB2中的自动增长字段  10.5 业务主键与逻辑主键  10.6 NULL的学问   10.6.1 NULL与比较运算符   10.6.2 NULL和计算字段   10.6.3 NULL和字符串   10.6.4 NULL和函数   10.6.5 NULL和聚合函数  10.7 开窗函数   10.7.1 开窗函数简介   10.7.2 PARTITION BY子句   10.7.3 ORDER BY子句   10.7.4 高级开窗函数  10.8 WITH子句与子查询 第11章 案例讲解  11.1 报表制作   11.1.1 显示制单人详细信息   11.1.2 显示销售单的详细信息   11.1.3 计算收益   11.1.4 产品销售额统计   11.1.5 统计销售记录的份额   11.1.6 为采购单分级   11.1.7 检索所有重叠日期销售单   11.1.8 为查询编号   11.1.9 标记所有单内最大销售量  11.2 排序   11.2.1 非字段排序规则   11.2.2 随机排序  11.3 表间比较   11.3.1 检索制作过采购单的人制作的销售单   11.3.2 检索没有制作过采购单的人制作的销售单  11.4 表复制   11.4.1 复制源表的结构并复制表中的数据   11.4.2 只复制源表的结构  11.5 计算字符在字符串中出现的次数  11.6 去除最高分、最低分   11.6.1 去除所有最低、最高值   11.6.2 只去除一个最低、最高值  11.7 与日期相关的应用   11.7.1 计算销售确认日和制单日之间相差的天数   11.7.2 计算两张销售单之间的时间间隔   11.7.3 计算销售单制单日期所在年份的天数   11.7.4 计算销售单制单日期所在月份的第一天和最后一天  11.8 结果集转置   11.8.1 将结果集转置为一行   11.8.2 把结果集转置为多行  11.9 递归查询   11.9.1 Oracle中的CONNECT BY子句   11.9.2 Oracle中的SYS_CONNECT_BY_PATH()函数   11.9.3 My SQL Server和DB2中递归查询 附录A 常用数据库系统的安装和使用  A.1 DB2的安装和使用  A.2 MySQL的安装和使用  A.3 Oracle的安装和使用  A.4 Microsoft SQL Server的安装和使用 显示部分信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值