作者:坏蛋
链接:https://zhuanlan.zhihu.com/p/23569276
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

什么是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注入经验与技巧

经验很重要,成功往往在多次失败之后。要想减少失败,就多看文章积累技巧吧,下面集合了i春秋论坛相关技术文章,从各个方面介绍了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注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

项目地址:https://github.com/sqlmapproject/sqlmap

2、SSQLInjection

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

项目地址:http://www.shack2.org/article/1417357815.html

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数据库。

项目地址:nasel.com.ar

6、SQLNinja

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

项目地址:http://www.northernfortress.net/

kali自带工具

7、BBQSQL

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

项目地址:https://github.com/Neohapsis/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站点可写目录,上传和控制后门,克隆数据库等等

项目地址:http://sqlsus.sourceforge.net/download.html

10、SQL Poizon

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

这个很老了就不提供地址了,互联网上很多。

SQL注入技术专题—由浅入深【精华聚合】的更多相关文章

  1. SQL注入技术专题—由浅入深【精华聚合贴】

    SQL注入技术专题—由浅入深[精华聚合贴] 不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企 ...

  2. 详解基于MSSQL “order by”语句报错的SQL注入技术

    SQL注入,又名黑客技术之母,是一种臭名昭著的安全漏洞,由于流毒甚广,已经给网络世界造成了巨大的破坏.当然,对于该漏洞的利用技术,也是花样繁多,如访问存储在数据库中的数据,使用MySQL的load和i ...

  3. SQL 注入~MySQL专题

    Recently, 团队在做一个关于SQL的项目,这个专题是项目中的一部分,该部分正是由我来负责的.今天,分享给正在奋斗中的伙伴们,愿,你们在以后的学习道路中能有自己的收获.              ...

  4. PHP的SQL注入技术实现以及预防措施

    SQL 攻击(SQL injection,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指 令,在设计不良的程序当中忽略了检 ...

  5. SQL注入技术

    TalkTalk的信息泄漏事件导致约15万人的敏感信息被暴露,涉嫌造成这一事件的其中一名黑客使用的并不是很新的技术.事实上,该技术的「年纪」比这名15岁黑客还要大两岁. [译注:TalkTalk是英国 ...

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

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

  7. SQL注入不简单?那是你没有懂它的原理~

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

  8. SQL注入专题

    SQL注入专题--整理帖 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别, 所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被 ...

  9. (非原)SQL注入专题--整理帖 && like 语句拼sql 如何防止注入攻击。

    原地址:blog.csdn.net/lvjin110/article/details/28697695 like 语句拼sql 如何防止注入攻击?http://bbs.csdn.net/topics/ ...

随机推荐

  1. ARP投毒及其防御方法

    1.攻击原理 ARP欺骗就是中间人欺骗pc机,告诉pc机它是服务器.再欺骗服务器,告诉服务器它就是pc机.以致获取服务器与pc机的会话信息. 中间人欺骗服务器时,会给服务器发一个报文,发之前把报文中的 ...

  2. Autodesk View and Data API练练手

    大家如果参加过我们的活动,你应该已经听过看过不少关于View and Data Web Service的例子里,如果还没有的话,请看看下面这几篇: http://www.cnblogs.com/jun ...

  3. Eclipse CDT Linux下内存分析 补记

    常用工具汇总 http://www.ibm.com/developerworks/cn/linux/l-cn-memleak/ 常用的内存分析工具 http://en.wikipedia.org/wi ...

  4. VMware Data Recovery备份恢复vmware虚拟机

    VMware Data Recovery 是VMware虚拟机备份工具,可创建虚拟机备份,同时不会中断虚拟机的使用或虚拟机提供的数据和服务.Data Recovery 管理现有备份,并在这些备份过时后 ...

  5. iOS 开发之路(AES/DES加密实现) 三

    最近接触的这个项目由于以前服务器上用的是DES/CBC/PKCS5Padding加密方式,为了让在iOS上的加密结果与服务器端保持一致,我做了很多尝试,现在分享给大家.PS:现在不推荐用DES了,只是 ...

  6. mac PHP配置

    apache默认路径配置方法 apache的配置   apache已经自带了,只需如下三个命令就可以了. 开启apache服务 sudo apachectl start 停止apache服务 sudo ...

  7. 【转】简析 .NET Core 构成体系

    前文介绍了.NET Core 在整个.NET 平台所处的地位,以及与.NET Framework的关系(原文链接),本文将详细介绍.NET Core 框架的构成和各模块主要功能,以及如何实现跨平台. ...

  8. Sublime Text 收藏笔记

    Sublime Text:初学者不知道的那些事 转载自: http://blog.jobbole.com/23949/

  9. Java内存泄露简述

    Java的一个最显著的优势是内存管理.你只需要简单的创建对象而不需要负责释放空间,因为Java的垃圾回收器会负责内存的回收.然而,情况并不是这样简单,内存泄露还是经常会在Java应用程序中出现. 本篇 ...

  10. 如何分析解读systemstat dump产生的trc文件

    ORACLE数据库的systemstat dump生成trace文件虽然比较简单,但是怎么从trace文件中浩如烟海的信息中提炼有用信息,并作出分析诊断是一件技术活,下面收集.整理如何分析解读syst ...