SQL注入学习资料总结

转载自: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的界面非常简单,即使没有多少技术功底的人也能轻松上手。

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

原文地址:https://www.cnblogs.com/ssooking/p/8137597.html

时间: 2024-10-29 19:07:48

SQL注入学习资料总结的相关文章

sql注入学习经验

本人是一名渗透新手,信息安全专业的学生一直在学习关于安全方面的理论学习,主要进行的是网站的搭建,但自从接触了web渗透之后才发现自己以前搭建的网站真是漏洞百出,从而也爱上了渗透的学习,今天就和大家分享一下我的学习成果,有什么不好的地方欢迎大家提意见! 今天主要是讲一讲sql注入,sql注入的原理和危害就不多说了,大家百度一下就可以了,给大家讲一讲我的实践经验. sql注入的方法(get参数)     说复杂了没用其实就两种,工具注入与手工注入 (一)选择网站是否能进行sql注入(一般使用火狐浏览

sql注入学习笔记(1)

把学习到的sql注入的一点知识记录下来 更改默认的sqlmap脱库保存的路径  --output-dir F:\ Substr(字符串,起始位置,字符数)   (初始为1不是0) 这里有示例 https://www.1keydata.com/cn/sql/sql-substring.php 通常配合ascii函数判断出字符的值ascii(substr((select database()),1,1))) > 100 二分法(又叫折半法)可以减少猜测的量 Length()   判断长度 AND (

DVWA 安装使用 & SQL注入学习心得(一)

DVWA 环境搭建和安装简易使用 下载安装phpstudy,这部分不用说了,肯定大家都有,或者安装过.在浏览器输入127.0.0.1,测试一下. 官网下载DVWA http://www.dvwa.co.uk ,解压后放在phpstudy的www目录下. 此时mysql的密码还是空,登录的时候会提示不能空,可以从phpstudy的界面[其他选项菜单]->[My SQL工具]->[重置密码]. 将DVWA/confing下的config.inc.php.dist修改为config.inc.php,

简单的SQL注入学习

引贴: http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/ 首先需要编写一个php页面,讲php页面放入/opt/lampp/htdocs目录下: 解释一下这个页面: 1.通过if语句判断变量是否初始化 2.if语句中通过mysql_connect()函数连接数据库 3.连接数据库成功后,选择一个数据库 4.选择完数据库后执行一条mysql查询 5.进行查询结果的处理 6.使用echo讲查询结果输出,便于查看

简单sql注入学习

sql注入是什么? 所谓SQL注入,就是通过把SQL命令插入到Web表单提 交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据 库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句.比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到sql注入式攻击. sql注入漏洞的

SQL注入学习(二)

SQL注入点判断 ?id=35 +1/-1  查看页面是否发生变化 select * from tbName where id=$id 1.?id=35'数字后面加上[' or '' or )]来判断是字符型,还是数字型,如果有报错.有回显的话,用报错注入 select * from tbName where id=35' near ''' at line 1 数字型 near ''2'' LIMIT 0,1' at line 1 字符型 2.?id=35 and 1=1 // ?id=35 a

Sql 注入 学习笔记

以下是MSDN Magazine 里面的一段文章: http://msdn.microsoft.com/zh-cn/magazine/cc163523.aspx 我很好奇这样到底能不能够注入SQL, 所以我建了个 console 程序 static void Main(string[] args) { SqlConnection conn new SqlConnection(); conn.Open(); string commandtext = "exec SetPassword 'admin

防止sql注入式攻击 SQL注入学习——三层架构

解决方案是:1.首先在UI录入时,要控制数据的类型和长度.防止SQL注入式攻击,系统提供检测注入式攻击的函数,一旦检测出注入式攻击,该数据即不能提交:2.业务逻辑层控制,通过在方法内部将SQL关键字用一定的方法屏蔽掉,然后检查数据长度,保证提交SQL时,不会有SQL数据库注入式攻击代码:但是这样处理后,要求UI输出时将屏蔽的字符还原.因此系统提供屏蔽字符 的函数和还原字符的函数.3.在数据访问层,绝大多数采用存储过程访问数据,调用时以存储过程参数的方式访问,也会很好的防止注入式攻击. 3    

sql注入学习笔记4

延时注入,延时注入每种数据库都有不同的延时函数 and If(ascii(substr(database(),1,1))=105,1,sleep(5))--+ 这是mysql的延时注入,当ascii(substr(database(),1,1))=105为真时返回1,为假则执行sleep(5),将会有5秒的延时报错 重复执行指定操作的函数 BENCHMARK(count,expr)函数将表达式expr重复执行count次,然后返回执行时间.该函数可以用来判断MySQL处理表达式的速度. UNIO