SQL注入工具实践

程序简介

超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入。

超级SQL注入工具目前支持Bool型盲注、错误显示注入、Union注入,支持Access、MySQL5以上版本、SQLServer、Oracle等数据库。

超级SQL注入工具采用C#开发,底层采用Socket发包进行HTTP交互,极大的提升了发包效率,相比C#自带的HttpWebRequest速度提升2-5倍。

超级SQL注入工具支持盲注环境获取世界各国语言数据,解决了各种常见注入工具在盲注环境下无法支持中文等多字节编码的数据。

工具特点:

1.  支持任意地点出现的任意SQL注入
2.  支持各种语言环境。大多数注入工具在盲注下,无法获取中文等多字节编码字符内容,本工具可完美解决。
3.  支持注入数据发包记录。让你了解程序是如何注入,有助于快速学习和找出注入问题。
4.  依靠关键字进行盲注,可通过HTTP相应状态码判断,还可以通过关键字取反功能,反过来取关键字。

程序运行需要安装. Net Framework 4.0。运行环境Win7,Win8环境已测试,其他环境请自测。

1.基础信息配置

1.1.地址

打开程序在基础配置里面填写需要注入地址的域名或IP地址。

1.3. SSL

如果是HTTPS传输的网页需要选择SSL,选择SSL会切换到443端口,如果是其他端口请修改端口地址。

1.4.超时

程序使用Socket传输,每个HTTP请求的超时时间,如果超过此时间,程序将放弃本次请求,单位是秒。

1.5.编码

程序在获取HTML网页时,采用的解码方式,程序会自动识别网页编码,如果识别失败,将采用此编码进行解码。编码可以在HTTP相应头的Content-Type或HTML头里面查看“charset=xxx”。

1.6.注入类型

程序目前支持Bool盲注、Union注入、错误显示注入,已基本覆盖全部注入获取数据方式。

延时注入可以选择Bool盲注,在判断方式中选择时间判断,目前延时只支持mysql数据库。

1.6.1.Bool盲注

Bool盲注利用数据库的阿斯特码(ASCII码)或Unicode、Hex等编码将目标数据转换成数字,利用And条件来判断此数字的值,判断完成后根据对应编码转换成字符串。

目前Bool盲注支持Access、MySQL5、SQLServer、Oracle等数据库,并支持中文、日文、繁体中文等世界各种语言。解决了各种注入工具在盲注环境无法获取中文等多字节编码的字符。

1.6.2. Union注入

Union注入利用数据库的Union联合查询来获取数据。

目前盲注环境支持Access、MySQL5、SQLServer、Oracle等数据库。

1.6.3. 错误显示注入

错误显示注入利用数据库在完成某项操作时,在程序出现错误时将错误信息显示出来进行注入获取目标数据。由于错误显示的字符有长度限制,所以比Union注入方式稍慢,MySQL错误信息显示大约最长为64个字符,Oracle错误显示大约最长约为256个字符,SQLServer错误信息显示大约最长为2030个字符。

目前盲注支持MySQL5、SQLServer、Oracle等数据库。Access不支持错误显示注入。

1.7. 数据库

判断数据库类型,选择对应的数据库。

1.8. 线程

选择程序同时能运行的线程数量,默认10个线程。

1.9. 重试

程序发送一个HTTP包失败后,尝试继续发包的次数。

1.10. 自动识别

填好数据包,填写地址和端口即可自动进行注入识别,支持GET和POST参数自动识别注入。

1.11. 导出配置

点击导出配置,将选择需要导出程序配置信息的路径,程序将导出配置信息到一个XML文件中,以后可以使用菜单中的导入配置来加载配置信息。

  1. 注入中心

    2.1. 数据包

    方法一:

    在数据包中输入URL地址http://127.0.0.1:8090/mysql.jsp?id=1,在数据包空白处单击鼠标右键,选择“根据URL生成数据包”,即可自动配置GET型请求数据包,并自动设置IP地址和端口。

    方法二:

    使用抓包工具将HTTP发包数据抓取填写到这里,可使用Fiddler、Burp Suite等抓包工具,或手工配置数据包。

    注意事项:如果是POST提交数据,必须有Content-Length属性,程序才能自动计算长度。

2.2. 注入设置

2.2.1. 开启URL编码

开启URL编码后,程序将会把编码标记中的数据进行URL编码操作,建议选择,因为请求参数中如果有特殊字符,可能导致发包结果不一致。

2.2.2. 302跟踪

默认未开启,开启后,程序遇到302重定向时,将请求重定向的目标地址。如果可以根据状态吗判断注入时,可选中,下面关键字配置状态吗=码,进行注入。

2.2.3. 注入标记

通常手工注入使用”xxxx.asp?id=1 and 1=1”进行注入判断,那么这里选中“ and 1=1”点击标记注入,程序将在有注入的位置设置注入标记,程序注入时将标记替换成注入获取数据的代码。核心就是将我们测试语句中的“and 1=1”替换成标记。

示例:

标记其实就是选择payload放在那个位置

数字型: 1 and 1=1 把and 1=1替换成标记

字符型: 1‘ and 1=1 and ‘1‘=‘1 把and 1=1替换成标记

字符型: 1‘ and 1=1# 把and 1=1替换成标记

字符型: 1‘ and 1=1-- 把and 1=1替换成标记

搜索型: 1%‘ and 1=1 and ‘%‘=‘ 把and 1=1替换成标记

2.2.4. 编码标记

选择数据包中需要使用URL编码的字符,点击标记编码,程序将插入编码标记。程序将自动一配置好的编码方式进行编码。

2.2.5. 注入取数据配置

参考我是如何开始注入章节的自动模式中的获取数据配置。

3. 数据中心

3.1. 环境变量

3.1.1. 获取环境变量

点击右键弹出菜单,点击获取环境变量程序将获取数据库的基础信息,Access数据库不支持此功能。

3.1.2. 复制变量值

选中对应的变量,按右键复制值。

3.2. 数据库信息

3.2.1. 获取数据库

点击获取数据库,程序将获取全部数据库列表,Oracle将获取所有用户列表,Access没有库。

3.2.2. 获取表

点击获取数据表,程序将获取对应数据库的表。

3.2.3. 获取列

点击获取数据列,程序将获取对应表的列。

3.2.4. 获取数据

获取开始数据,默认开始下标为0,即重第一条数据开始获取,获取条数可设置,但不能超过重下标开始的剩余行数。双击列名可进行排序操作。

3.2.5. 编码设置

这里的编码设置用于Bool盲注取数据的配置,盲注如出现乱码,可以选择其他编码方式尝试获取数据,查看是否有乱码。这里编码主要用于数据库中Hex、Ascw、Unicode等编码函数的解码。

3.2.6. 导出数据

点击导出数据将选择导出数据的磁盘路径,程序将自动导出数据。

3.2.7. 添加节点

3.2.8. 删除节点

3.2.9. 修改节点

4. 文件操作

4.1. MySQL Load_File读文件

在Mysql的账户拥有文件读写权限下(一般情况下只有ROOT账户拥有),可在盲注、错误显示、Union注入下,读取地址路径下的文本文件内容。填写路径,选择MySQL Load_File读文件,点击开始即可。

4.2. MySQL Union写文件

在Mysql的账户拥有文件读写权限下(一般情况下只有ROOT账户拥有),可在Union注入下,向磁盘写文本文件。

4.3. SQLServer FileSystemObject写文件

在SA权限下,可利用FileSystemObject写文件,写文件内容注入不要超过4000字节,同时如何是GET请求提交注意,一般GET提交不能超过1024个字节,所以如果没写成功,看看你提交的数据是否太长。

4.4. SQLServer Sp_MakeWebTask写文件

在SA权限下,可利用Sp_MakeWebTask写文件,写文件内容注入不要超过4000字节,同时如何是GET请求提交注意,一般GET提交不能超过1024个字节,所以如果没写成功,看看你提交的数据是否太长。相比FileSystemObject成功率较低。

4.5. SQLServer利用备份数据库写文件

在SA权限下,可利用Back DataBase备份数据库方法,将内容备份到文件中。此方法写入文件后,此文件属于数据库备份文件,所以有一些其他多余数据。

4.6. SQLServer FileSystemObject读文件

在SA权限下,可利用FileSystemObject读文件,可在盲注、显错注入、Union注入下读取文件。读取文件长度不能超过4000字节。

5. 命令执行

目前此功能只支持SQLServer,在sa权限下,可利用xp_cmdshell执行操作系统命令,可选择是否回显执行结果。可在盲注、显错注入、Union注入下获取回显结果。执行此功能需支持多语句。

6. 注入绕过

6.1. 字符替换

替换编辑编码内的字符,需注意的,默认系统设置在URL编码前处理绕过字符,如果没有选择在URL编码前处理绕过字符,那么替换的字符就是URL编码后的字符,如替换空格成//,那么填写的就是“%20”替换成“%2f%2f”。

6.2. 包含关键字

适用于MySQL数据库的简绕过,可人工测试可行后选择使用/!/包含关键字来绕过防护。

6.3. 随机大写

将编码标记内的字符进行随机大小写转换,绕过SQL注入防护。

6.4. 发包延时

将每个包发送后休息一定时间在发送,绕过一些防护。

6.5. IP随机头

在HTTP请求头中增加随机IP值,这里列出来常见的伪装IP头,可测试选择对应的头,程序会随机产生IP。

6.6. Base64编码

将编码范围内参数进行base64编码。

7. 编码转换

填写需要转换的字符,选择对应编码解码方法就行。

8. 日志中心

8.1. 数据包历史记录

数据包历史记录记录了程序每一个HTTP的请求与相应,可用于错误排查。如需要提高性能,可在菜单中的系统设置中选择关闭HTTP发包日志记录。

8.2. 数据包详情

在数据包历史记录中选择一条记录,程序将自动将详细信息进行显示,可以查看请求响应数据,在响应中同时按“Ctrl+Alt”键可以弹出查找关键字面板,进行关键字查找。

9. 批量扫描注入

导入域名或链接,选择爬行或检测注入。

10. 停止注入

10.1. 立即停止

当前功能下点击右键,点击立即停止,程序将停止当前所有线程。

11. 系统设置

开启MySQL多字节取数据,将判断数据是否有中文。

开启自动检测更新,程序将自动检测更新。

开启底部日志,程序将在底部显示日志信息。

开启发包日志,程序将记录HTTP每一个发包日志。

开启在URL编码前处理绕过字符,所有绕过字符处理将处理后再进行URL编码。

软件关闭自动保存配置,软件关闭时是否自动保存配置。

最大列数,自动识别注入时,自动进行Union测试时的最大测试列。

单域名最大爬行数,批量扫描注入时,如果选中爬行连接,一个域名爬行到最大链接数后将停止继续爬行链接。

单域名最大扫描数,批量扫描注入时,单个域名最大检测注入链接数。

12. 我如何开始注入?

12.1. 自动模式

自动模式适合网页响应内容比较固定的注入检测,自动模式只支持GET或者POST传递的参数的注入检测,不支持HTTP请求属性的注入,如Referer注入。

首先开始自动识别注入时,需要配置基础信息,地址、端口、超时、编码、线程、重试次数。

其次需要配置HTTP请求数据包,可以在数据包文本框里按鼠标右键选择生成GET或POST数据模板,然后修改请求的URL地址和HOST及提交数据。

? 注入http://127.0.0.1:8090/mysql.jsp?id=1 示例数据包配置:

一、 方法一

在数据包中输入URL地址http://127.0.0.1:8090/mysql.jsp?id=1,在数据包空白处单击鼠标右键,选择“根据URL生成数据包”,即可自动配置GET型请求数据包,并自动设置IP地址和端口。

二、

首先生成GET数据包模板,修改请求URL地址,这里取URL的根目录“/mysql.jsp?id=1”,然后修改Host为“127.0.0.1:8090”即可。

最后点击识别注入,就可以开始自动识别注入了,如果识别成功,会自动设置数据库类型和注入类型,并自动进行注入标记,这时候只需要切换到数据中心选择对应功能去获取相关数据即可。

12.2. 手动模式

12.2.1. 基础配置

手动模式相对自动模式配置相对复杂,但自动模式可以对付各种情况各种位置的注入。

首先需要完成基本配置,基本配置参考自动模式的整个过程。

然后需要人工对注入进行判断后在选择对应数据库和注入类型,并进行标记,那么如何进行判断和标记呢?

首先需要判断注入的类型,比如数字型、字符型、搜索型等,然后判断对应的数据库。

判断完成后,需要对注入位置进行标记,如何判断和标记,请往下看!

12.2.2. 判断注入类型

12.2.2.1. 通用数字型

? URL地址:

http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1

判断注入:

改变参数id=1 and 1=1 和 id=1 and 1=2进行测试,如果1=1页面显示正常和原页面一样,并且1=2时页面报错或者页面部分数据显示不正常,那么可以确定此处为数字型注入。

判断数据库类型:

使用exists函数判断查询对应数据库的系统表是否存在,根据页面是否正常来判断对应数据库类型。

MySQL:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1 and exists(select 1 from information_schema.tables)

SQLServer: http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1 and exists(select 1 from sysobjects)

Access:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1 and exists(select 1 from MSysAccessObjects)

Oracle:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1 and exists(select 1 from user_tables)

12.2.2.2. 通用字符型

URL地址:

http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1

判断注入:

改变参数id=1’ and 1=1 and ‘1’=’1 和 id=1’ and 1=1 and ‘1’=’2进行测试,或者利用注释符号“#”或者“— ”,当然特殊字符记得进行URL编码,“#”URL编码后是“%23”,“— ”编码后是“—%20”,利用注释符,那么可以改变参数为id=1’ and 1=1%23和id=1’ and 1=2%23来进行测试,如果1=1页面显示正常和原页面一样,并且1=2时页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。

判断数据库类型:

使用exists函数判断查询对应数据库的系统表是否存在,根据页面是否正常来判断对应数据库类型。

MySQL:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1’ and exists(select 1 from information_schema.tables) and ‘a’=’a

SQLServer:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1’ and exists(select 1 from sysobjects) and ‘a’=’a

Access:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1’ and exists(select 1 from MSysAccessObjects) and ‘a’=’a

Oracle:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1’ and exists(select 1 from user_tables) and ‘a’=’a

12.2.2.3. 通用搜索型

? URL地址:

http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1

? 判断注入:

改变参数id=1%’ and 1=1 and ‘%’=’ 和 id=1%’ and 1=2 and ‘%’=’进行测试,或者利用注释符号“#”或者“— ”,当然特殊字符记得进行URL编码,“#”URL编码后是“%23”,“— ”编码后是“—%20”,利用注释符,那么可以改变参数为id=1%’ and 1=1%23和id=1%’ and 1=2%23来进行测试,如果1=1页面显示正常和原页面一样,并且1=2时页面报错或者页面部分数据显示不正常,那么可以确定此处为搜索型注入。

? 判断数据库类型:

使用exists函数判断查询对应数据库的系统表是否存在,根据页面是否正常来判断对应数据库类型。

MySQL:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1%’ and exists(select 1 from information_schema.tables) and ‘%’=’

SQLServer:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1%’ and exists(select 1 from sysobjects) and ‘%’=’

Access:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1%’ and exists(select 1 from MSysAccessObjects) and ‘%’=’

Oracle:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1%’ and exists(select 1 from user_tables) and ‘%’=’

12.2.2.4. OR类型

? URL地址:

http://127.0.0.1:8090/JavaSQLInjection/login.jsp?username=1&pass=1

? 判断注入:

改变参数username=1’ or(1=1 and 1=1) and ‘1’=’1 和 username=1’ or(1=1 and 1=2) and ‘1’=’1进行测试,或者利用注释符号“#”或者“— ”,当然特殊字符记得进行URL编码,“#”URL编码后是“%23”,“— ”编码后是“—%20”,利用注释符,那么可以改变参数为1’ or(1=1 and 1=1)%23和1’ or(1=1 and 1=2)%23来进行测试,如果1=1页面显示正常和原页面一样,并且1=2时页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。

? 判断数据库类型:

使用exists函数判断查询对应数据库的系统表是否存在,根据页面是否正常来判断对应数据库类型。

MySQL:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?username=1’ or(1=1 and exists(select 1 from information_schema.tables)) and ‘a’=’a&password=1

SQLServer:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1’ or(1=1 and exists(select 1 from sysobjects)) and ‘a’=’a

Access:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1’ or(1=1 and exists(select 1 from MSysAccessObjects)) and ‘a’=’a

Oracle:http://127.0.0.1:8090/JavaSQLInjection/mysql.jsp?id=1’ or(1=1 and exists(select 1 from user_tables)) and ‘a’=’a

12.2.3. 注入标记

很简单,首先选中需要进行URL编码的参数值,选择需要进行URL编码的参数后再选中之前判断注入类型中的“and 1=1”,然后点击右边的标记注入按钮,或者直接删除“and 1=1”后,在对应的位置插入注入标记。

12.2.4. 获取数据配置

12.2.4.1. Bool盲注取数据配置

12.2.4.1.1. 基本配置

Bool盲注配置依靠关键字、状态码、响应时间等因素进行逻辑上的真假判断。

? 关键字判断

关键字是正常逻辑上为真,页面上存在的字符,而逻辑上为假,页面上没有出现的字符。即“and 1=1”出现的字符,而“and 1=2”时未出现的字符。

示例:

正常的数字型注入:

盲注关键字可选择and 1=1时,页面上出现的关键字,and 1=2时没有出现的关键字,比如“SQL” 、“我是SQL”、“SQL注入”。一个原则,只要确保这个词是1=1条件是页面出现这个关键词,而1=2时不出现。

? 状态码判断

状态码判断原理同上,只是条件变成了and 1=1时出现这个状态码,二and 1=2时不出现这个状态码。

选择状态码判断后,程序盲注的关键字将依靠状态码判断,即“and 1=1”时HTTP请求的状态码为此关键字(200、403、302、500等),而“and 1=2”时为其他状态码。

? 时间判断:

需人工判断网页平均响应时间,设置一个时间阀值,当页面响应时间超过这个阀值,证明当前判断是正确的,否则不正确。

12.2.4.1.2. 关键字取反

关键字取反选择后,程序将反过来取注入的判断依据,比如即“and 1=2”出现的字符,而“and 1=1”时未出现的字符。如果选择了状态码,即“and 1=2”出现的状态码,而“and 1=1”时未为其他状态码。

12.2.4.1.3. 验证关键字是否正确

点击关键字可以验证关键字是否配置正确。

12.2.4.2. 错误显示方式取数配置

无需配置,程序将自动获取错误信息,需要注意的是程序可以显示错误信息。

12.2.4.3. Union注入取数据配置

因为Union联合查询前后的列数需要保持一致,程序只能利用显示列显示注入获取的数据,所以Union注入需要配置SQL注入的列数、和数据显示列。

注意事项:由于Access数据库没有系统表,所以只能盲猜表和列,所以需要配置盲注取数据配置。配置参考Bool盲注取数据配置。

12.2.5. 获取数据

切换到数据中心,尝试获取数据,如获取失败,可尝试切换数据获取方式,或者人工测试是否有相关防护规则,检查网页编码是否正常,对HTTP发包日志进行查看分析失败原因,在调整配置。

原文地址:https://www.cnblogs.com/bloomeet/p/9065064.html

时间: 2024-10-13 12:12:15

SQL注入工具实践的相关文章

利用sqlmapapi打造自动化SQL注入工具

友链:http://www.freebuf.com/sectool/74445.html 0×01 前言 各位看官看到标题吐槽帝就开始了:已经有了各种各样的注入工具,为什么还要手工打造一个? 事实上,做为一名苦逼乙方测试工程师以及漏洞盒子屌丝白帽子 ,在疲于应对各种死缠滥打的甲方以及成堆的web测试需求时,我经常遇到以下场景: (1)有大批量的网站需要检测的场景 乙方工程师工作辛苦劳累从来都不抱怨,有项目一定都是最能抗的,向无数奋斗在一线的乙方工程师致敬! (2)系统内部业务复杂可能会存在众多测

SQL 注入工具集合

众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL注入工具可帮助管理员及时检测存在的漏洞. BSQL Hacker BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自动注入工具(支持SQL盲注),其设计的目的是希望能对任何的数据库进行SQL溢出注入. BSQL Hacker的适用群体是那些对注入有经验的使用者和那些想进行自动SQL注入的人群.BSQL Hacker可自

十大关系数据库SQL注入工具一览

摘要:众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL工具可帮助管理员及时检测存在的漏洞. BSQL Hacker BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自动注入工具(支持SQL盲注),其设计的目的是希望能对任何的数据库进... 众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款S

10个SQL注入工具(转载)

众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL注入工具可帮助管理员及时检测存在的漏洞. BSQL Hacker 10个SQL注入工具 BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自动注入工具(支持SQL盲注),其设计的目的是希望能对任何的数据库进行SQL溢出注入. BSQL Hacker的适用群体是那些对注入有经验的使用者和那些想进行自动SQL注入的人群.BS

10 个 SQL 注入工具

BSQL Hacker BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自动注入工具(支持SQL盲注),其设计的目的是希望能对任何的数据库进行SQL溢出注入. BSQL Hacker的适用群体是那些对注入有经验的使用者和那些想进行自动SQL注入的人群.BSQL Hacker可自动对Oracle和MySQL数据库进行攻击,并自动提取数据库的数据和架构. The Mole The Mole是一款开源的自动化SQL注入工具,其可绕过IPS/IDS(入侵防

如何编写一个SQL注入工具

0x01  前言 一直在思考如何编写一个自动化注入工具,这款工具不用太复杂,但是可以用最简单.最直接的方式来获取数据库信息,根据自定义构造的payload来绕过防护,这样子就可以. 0x02 SQL注入工具 A.联合查询 union select 实现起来最为简单,报错注入的实现方式也基本一致,主要思路:获取所有数据库名--选择数据库--查看这个数据库下所有表---选择表--查询这个表下所有列名. 代码详情: #! /usr/bin/env python # _*_ coding:utf-8 _

sql注入工具:sqlmap命令

sqlmap是一款专业的sql注入工具, 让你告别人工注入, 程序高效自动注入 前提是你有找到注入点 , 工具的官方网站:http://sqlmap.org/ kali系统默认安装sqlmap, 不需要额外安装: sqlmap的命令行帮助: ___ __H__ ___ ___[.]_____ ___ ___ {1.1.11#stable} |_ -| . [,] | .'| . | |___|_ [']_|_|_|__,| _| |_|V |_| http://sqlmap.org Usage:

SqL注入攻击实践

研究缓冲区溢出的原理,至少针对两种数据库进行差异化研究 缓冲区溢出原理 缓冲区溢出是指当计算机程序向缓冲区内填充的数据位数超过了缓冲区本身的容量.溢出的数据覆盖在合法数据上.理想情况是,程序检查数据长度并且不允许输入超过缓冲区长度的字符串.但是绝大多数程序都会假设数据长度总是与所分配的存储空间相匹配,这就为缓冲区溢出埋下隐患. 原理 针对mysql数据库 check_connection (sql_parse.cc): / Old clients send null-terminated str

sqlmap的学习之路-自动化测试SQL注入工具

sqlmap 自动化测试sql 注入问题  会返回版本信息等等. Sqlmap是开源的自动化SQL注入工具,由Python写成,因此运行需要安装python环境. 如需了解更多sqlmap资料可以访问官方http://sqlmap.org/,https://github.com/sqlmapproject/sqlmap,https://www.python.org . 注意:sqlmap只是用来检测和利用sql注入点的,并不能扫描出网站有哪些漏洞,使用前请先使用扫描工具扫出sql注入点. 特点: