SQL注入原理与工具讲解
一、什么是SQL注入?
SQL注入是将恶意的SQL语句插入到表单、URL链接或者页面请求的内容中,并最终让后端数据库插入执行,使得黑客能够得以控制WEB服务器的操作,这就是SQL注入攻击!在渗透过程中,后端服务器往往会回显一些报错信息,黑客能很好的利用这些信息,决定下一步的渗透操作!
二、什么是SQL盲注?
盲注,Blind SQL Injection,整个渗透过程类似一个盲目的过程,摸黑求索的过程。
在SQL注入攻击过程中,如果后端不反馈具体的错误信息,抑或是只给出一个模糊的反馈,如输入数据有误或者空白页面。黑客往往会仔细检查攻击行为中的间接信息,以获取额外的可利用的渗透线索,这种情况下的注入就被称为SQL盲注。
三、如何使用Kali Linux进行SQL盲注?
SQL注入分为手动注入和工具注入,手动注入对渗透人员要求较高,往往需要反复进行大量注入操作,每次都需要重复设置配置项,构建新的SQL语句等,大量的重复操作,导致渗透效率低下。为了改变现状,Kali Linux提供了一个SQL盲注工具BBQSQL,它是一种用Pyhthon写的SQL盲注框架,使用它可以很好的帮助我们进行半自动化的渗透盲注!
BBQSQL是半自动工具,渗透人员可以方便地将各项参数进行预先设置,每次测试,只需要修改一项,就可以执行一次测试,从而避免重复项目的设置。它也自带一个直观的UI用户界面,使设置攻击更容易。
四、BBQSQL有什么特征?
1、利用SQL盲注漏洞
2、半自动
3、与数据库无关
4、多功能
5、利用两种搜索技术
6、并发的HTTP请求
6、配置导入/导出
7、自定义的Hooks
9、速度快
五、如何使用BBQSQL?
使用BBQSQL需要为它提供满足条件的请求信息,如下:
1、URL
2、HTTP方法
3、标题
4、Cookies
5、编码方法
6、重定向方式
7、文件夹
8、HTTP认证
9、代理
一、jSQL是什么?
jSQL是一款使用java开发的Web渗透测试工具,在Kali Linux自带,无需自己安装,开箱即用!它主要用于发现远程数据库的漏洞信息。
jSQL是免费开源的,还支持跨平台,支持Windows, Linux, Mac OS等。一开始该工具主要实施SQL注入,后来增加管理页面暴力扫描、敏感文件猜测、Web shell等功能,形成一个综合性的Web渗透测试工具。
支持自动注入多种种数据库:
多种注入策略:Normal, Error, Blind 和 Time
多种注入结构:Standard, Zipped, Dump In One Shot
SQL Engine用于研究和优化SQL表达式
注入多个目标
搜索管理页面
Web shell和SQL shell的创建和虚拟化
使用注入在主机上读写文件
密码的哈希强制
对字符串进行编码和解码
三、SQL注入攻击是什么?【复习】
我们知道,不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动。黑客或渗透测试人员往往通过构造恶意的SQL语句,注入到后端数据库执行,非法获取相应的数据或内容!在网络中,数据库驱动的Web应用随处可见,由此SQL注入是一种常见的web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者进行其他一系列攻击。
四、SQL注入有哪些攻击方式?【复习】
SQL注入的攻击方式有以下三种:
1.可显注入:攻击者可以直接在当前界面内容中获取想要获得的内容
2.报错注入:数据库查询返回结果并没有在页面中显示,但是应用程序将数据库 报错信息打印到了页面中,所以攻击者可以构造数据库报错语句,从报错信息中获取想要获得的内容
3.盲注:数据库查询结果无法从直观页面中获取,攻击者通过使用数据库逻辑或使数据库库执行延时等方法获取想要获得的内容.
一、什么是mdb?
mdb-sql [ -HFp ] [ -d <分隔符>] [ -i <文件>] [ -o <文件>] [<数据库>]
2、选项:
-H Supress标题行。
-F 进制页脚行
-p 以标签分隔格式简单打印输出。
-d 指定一个替代列分隔符。如果未指定分隔符,则在打印(-p)关闭的情况下,列将由制表符分隔。如果启用漂亮
的打印,这个选项是没有意义的。
-i 指定一个输入文件。该选项允许将包含SQL的输入文件传递给mdb-sql。见备注。
-o 指定一个输出文件。此选项允许使用输出文件的名称而不是stdout。
3、命令
交互模式下的mdb-sql需要一些特殊的命令。
connect to
(连接到<数据库>)如果没有在命令行中指定数据库,则在发出任何查询之前,此命令是必需的。它还允许在工具中切换一次数据库。
disconnect
(断开)将从当前数据库断开连接。
go
(走)每个批处理都使用“go”命令发送到解析器。
重置可以使用“重置”命令清除批次。
list tables
list tables命令将显示此数据库中可用表的列表,类似于命令行上的mdb-tables实用程序。
describe table
(描述表
)将显示指定表的列信息。
quit
(放弃)将退出该工具。
一、John the Ripper 是 什 么 ?
John the Ripper是一个快速的密码破解工具,号称十大黑客工具之一。用于在已知密文的情况下尝试破解出明文,支持目前大多数的加密算法,如DES、MD4、MD5等。
John the Ripper支持多种不同类型的系统架构,包括Unix、Linux、Windows、DOS模式、BeOS和OpenVMS,主要目的是破解不够牢固的Unix/Linux系统密码。除了在各种Unix系统上最常见的几种密码哈希类型之外,它还支持Windows LM散列,以及社区增强版本中的许多其他哈希和密码。它是一款开源软件。
Kali Linux中自带John the Ripper这款黑客工具,开箱即用!
二、John the Ripper用法?
john [OPTIONS] [PASSWORD-FILES]
john [选项] [密码文件]
选项:
--single[=SECTION] ]“单裂”模式
--wordlist[=FILE] --stdin 单词表模式,从FILE或stdin读取单词
--pipe 像--stdin一样,但批量读取,并允许规则
--loopback[=FILE] 像 --wordlistg一样, 但是从.pot文件中获取单词
--dupe-suppression 压制wordlist中的所有模糊(并强制预加载)
--prince[=FILE] PRINCE模式,从FILE中读取单词
--encoding=NAME 输入编码(例如,UTF-8,ISO-8859-1)。也可以看看doc / ENCODING和--list = hidden-options。
--rules[=SECTION] 为单词表模式启用单词修改规则
--incremental[=MODE] “增量”模式[使用部分模式]
--mask=MASK 掩码模式使用MASK
--markov[=OPTIONS] “马尔可夫”模式(参见doc / MARKOV)
--external=MODE 外部模式或字过滤器
--stdout[=LENGTH] 只是输出候选人密码[在LENGTH切]
--restore[=NAME] 恢复被中断的会话[名为NAME]
--session=NAME 给一个新的会话NAME
--status[=NAME] 打印会话的状态[名称]
--make-charset=FILE 制作一个字符集文件。它将被覆盖
--show[=LEFT] 显示破解的密码[如果=左,然后uncracked]
--test[=TIME] 运行测试和每个TIME秒的基准
--users=[-]LOGIN|UID[,..] [不]只加载这个(这些)用户
--groups=[-]GID[,..] 只加载这个(这些)组的用户
--shells=[-]SHELL[,..] 用[out]这个(这些)shell来加载用户
--salts=[-]COUNT[:MAX] 用[out] COUNT [到MAX]散列加载盐
--save-memory=LEVEL 启用内存保存,级别1..3
--node=MIN[-MAX]/TOTAL 此节点的数量范围不在总计数中
--fork=N 叉N过程
--pot=NAME 锅文件使用
--list=WHAT 列表功能,请参阅--list = help或doc / OPTIONS
--format=NAME 强制使用NAME类型的散列。支持的格式可以用--list=formats和--list=subformats来看