转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html 

什么是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

4SQL注入漏洞发现及修补技术(有攻有防才是王道)
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自带工具

7BBQSQL

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注入,如何预防sql注入,如何寻找sql注入漏洞,如何注入sql攻击 (原)

    (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文章最后关于如何预防sql注入) (整篇文章废话很多,但其实是为了新手能更好的了解这个sql注入是什么,需要学习的是文 ...

  2. SQL学习之SQL注入学习总结

    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. 测试数据库 我们本文就以如下数据库作为测试数据库,完成我们的注入分析 ...

  3. sql注入学习笔记 详解篇

    sql注入的原理以及怎么预防sql注入(请参考上一篇文章) https://www.cnblogs.com/KHZ521/p/12128364.html (本章主要针对MySQL数据库进行注入) sq ...

  4. SQL注入学习-Dnslog盲注

    1.基础知识 1.DNS DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 ...

  5. 从零开始的sql注入学习(挖坑不填)

    首先,本人是小白,这篇文章也只是总结了一下大佬们的sql注入方法,要是有错,请各位大佬指出,以便学习. 虽然我是菜鸡,但是太过基础的sql注入问题也就不再重复的解释了.直接从常用的说起. 实战中常用的 ...

  6. 简单sql注入学习

    sql注入是什么? 所谓SQL注入,就是通过把SQL命令插入到Web表单提 交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQ ...

  7. SQL注入学习(一)

    注入攻击的本质:web应用程序没有过滤用户输入或过滤不严谨,直接把用户输入的恶意数据当做代码执行 两个条件: 1.用户能够控制输入 2.原本程序要执行的代码,拼接了用户输入的数据 注入类型 SQL注入 ...

  8. Java SQL注入学习笔记

    1 简介 文章主要内容包括: Java 持久层技术/框架简单介绍 不同场景/框架下易导致 SQL 注入的写法 如何避免和修复 SQL 注入 2 JDBC 介绍 JDBC: 全称 Java Databa ...

  9. sql注入学习心得与sqlmap使用心得

    做题是最好的老师 首先先来分享一下我用来练手的题目,实验吧中的简单的sql注入1,2,3 不得不说,sql注入真是一个神奇的东西,至少我以前看起来一点头绪都没有的题目能入手了 首先是简单的sql注入3 ...

随机推荐

  1. 克罗内克符号kronecker_delta

    Kronecker delta 克罗内克函数 Wiki 维基百科 Kronecker delta 定义 \[\delta _{{ij}}={\begin{cases}0&{\text{if } ...

  2. jquery 1.7.2源码解析(二)构造jquery对象

    构造jquery对象 jQuery对象是一个类数组对象. 一)构造函数jQuery() 构造函数的7种用法: 1.jQuery(selector [, context ]) 传入字符串参数:检查该字符 ...

  3. PAT基础6-8

    6-8 简单阶乘计算 (10 分) 本题要求实现一个计算非负整数阶乘的简单函数. 函数接口定义: int Factorial( const int N ); 其中N是用户传入的参数,其值不超过12.如 ...

  4. 关于UITableView的一些老是忘记的小杂碎

    1:如何取消单元格的选中状态 简简单单的一句 [TableView deselectRowAtIndexPath:[TableView indexPathForSelectedRow] animate ...

  5. 小甲鱼Python第十一讲课后习题

    0. 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案. old = [1, 2, 3, 4, 5]new = oldold = [6]print(new) 如果不上机操作,你觉得会 ...

  6. 【分治-前缀积后缀积】JS Window @2018acm徐州邀请赛G

    问题 G: JS Window 时间限制: 2 Sec  内存限制: 512 MB 题目描述 JSZKC has an array A of N integers. More over, he has ...

  7. 如何实现CSS限制字数,超出部份显示点点点...

    <div style="width:200px; white-space:nowrap;overflow:hidden;text-overflow:ellipsis; border:1 ...

  8. JSAP104

    JSAP104 1.目标: 2.绑定事件的区别 1).addEventListener中的this是当前绑定的对象 .attachEventListener是window 2) 3)解绑事件 方法一: ...

  9. C# 获取字符串字节长度

    一.C# 获取字符串字节长度 1.在C# 语言中使用string 字符串Unicode 编码 2.在C#语言中常用汉字 占 3个字节 方式1:使用默认编码类获取字节长度 Console.WriteLi ...

  10. 如何确定一台linux主机是Linux (i386/i686)还是Linux (x86_64)

    在下软件包的时候,往往会遇到一个选择: 假设自己的主机是Linux,那么Linux (i386/i686)和Linux (x86_64)究竟应该选哪一个呢? 针对当今的硬件而言,如果你主机的CPU是6 ...