SQL注入漏洞测试工具比较

简介:   Sql注入测试一定要使用工具。原因一:工作效率;原因二:人工很难构造出覆盖面广的盲注入的sql语句。 例如当一个查询的where字句包含了多个参数,or and的关系比较多时,简单的or 1=1, and 1=2是很难发现注入点的。


 

Sql注入测试一定要使用工具。原因一:工作效率;原因二:人工很难构造出覆盖面广的盲注入的sql语句。

例如当一个查询的where字句包含了多个参数,or and的关系比较多时,简单的or 1=1, and 1=2是很难发现注入点的。

Sql注入的工具很多(Top 15 free SQLInjection Scanners),我最近使用的有Sqlmap,SqliX,JbroFuzz,SqlPower Injector, 网站啄木鸟.现将他们的使用方法和比较结果贴于此:

-------------------------------------------------------------------------------------------

Sqlmap

Sqlmap是python开发的SQL注入漏洞测试工具。没有UI界面的命令行工具。虽说是命令行工具,可他的使用比网站啄木鸟,Sql Powerinjector 容易多了,并且有很详细的帮助文档。

从下面2个地址获得相关程序包:

Python下载,推荐下载2.7版本,兼容性好:http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi

 

SqlMap根目录下Sqlmap.py是主程序,sqlmap.conf是配置文件。Sqlmap的使用有2种方式:

1 在cmd中直接输入命令行。

2 在sqlmap.conf中配置命令行参数,然后在cmd中用sqlmap.py -c sqlmap.conf 发起攻击。


我比较喜欢第二种方式。这里仅列出sqlmap.conf种几个命令。更详细的命令描述参考doc目录下的readme.pdf,

#Target URL.

#Example: http://192.168.1.121/sqlmap/mysql/get_int.php?id=1&cat=2

url =

指定攻击的url地址。

#Data string to be sent through POST.

data=

如果是POST命令的话,请在data字段填上POST的数据。

#HTTP Cookie header.

cookie=

如果网站需要登录的话,请在cookie字段填上cookie数据。cookie数据可以用wireshark抓包得到。

#Alert with audio beep when sql injection found.

beep= True

建议把beep设为True,当发现注入点时Sqlmap会嘀的一声,很提神的声音。

相关命令设置好以后,在命令行中输入sqlmap.py -c sqlmap.conf,就可以开始Sql注入测试啦。发现注入点(嘀的一声响)后,就可以通过设置其他命令来尝试获取更多的后台数据库信息。

Sqlmap功能非常多,获取数据用户名/密码/角色,数据库表,查询数据库表内容,上传/下载文件文件,修改注册表deng。当然有些功能是在当前数据库用户用一定权限的前提下才能完成。

 -------------------------------------------------------------------------------------------

SqliX

SqliX是由OWASP用Perl开发的SQL注入漏洞测试工具。跟Sqlmap一样是命令行驱动,也和sqlmap一样的好用。没有详细的帮助文档,项目主页上有简单的安装和使用介绍。

Perl下载地址:http://www.activestate.com/activeperl/downloads

 

SqliX依赖2个包:首先使用下面的命令安装依赖包:

    perl -MCPAN -e 'install WWW::CheckSite'

    perl -MCPAN -e 'install Tie::CharArray'

如果CheckSite安装失败,出现如下错误信息:

 maketest had returned bad status, won't install without force

使用下面的命令强制安装:

 perl-MCPAN -e "CPAN::Shell->force(qw(install WWW::CheckSite));"

 

 安装成功后就可以在cmd中开始SqliX的注入测试了。SqliX的命令相对较少:

 -url给定测试的URL地址

 --post_content如果是POST命令的话,请加上POST数据

 -crawl这是一个唯一Sqlmap没有的功能。他指定一个url的根目录,爬虫原理爬出所有的链接地址,然后对每个地址进行注入测试。

 -v显示信息级别,值越大,显示的信息越多。

 -all

 -method_taggy

 -method_error

 -method_blind

 -method_blind_integer

 -method_blind_string

 -method_blind_statement

 -method_blind_comment

以上 这些是根据不同的注入原理得出的不同的注入方法,一般选择-all或者-method_blind,应用所有的注入方法。

 例如:sqlix.pl -urlhttp://target1.edu/extensioninfonet/article.asp?id=3602 -method_blind-exploit -v=2

几秒钟后,显示信息如下:

 AnalysingURL [http://target1.edu/extensioninfonet/article.asp?id=3602]

 http://target1.edu/extensioninfonet/article.asp?id=3602

        [+] working on id

                [+] Method: SQL Blind Integer Injection

                        [FOUND] Blind SQL Injection: Integer based

                        [INFO] Current function:

                        [INFO] length: 0

 

                        [FOUND] SQL Blind Integer Injection

 

RESULTS:

Thevariable [id] from [http://extension.missouri.edu/extensioninfonet/article.asp?id=3602]is vulnerable to SQL Injection [Integer without quote - ].

“is vulnerable” 表明这个url是有注入漏洞的。

SqliX发现漏洞的能力确实不错,不比Sqlmap差。而漏洞利用的能力远不如Sqlmap,他只能执行一些函数和sql语句。事实上在不知道后台数据库表名的情况下很难执行sql语句。SqliX这样设计是可以理解的,他的目的只是为了进行Sql注入漏洞测试发现漏洞,才不希望被用来干坏事呢。

 -------------------------------------------------------------------------------------------

JbroFuzz,是OWASP开发Web应用程序模糊(Fuzz)测试工具.有UI界面,但真的不好用,很多常用操作都没有快捷键的支持。他提供Sql注入相关的有效载荷(Payload,这个词真没有合适的中文翻译)。直接看看Sql注入的payload吧:

' or1=1--

and12=21

or'7659'='7659

unionall select @@version--

unionall select 1,2,3

1 anduser_name() = 'dbo'

等等payload有很多。JBroFuzz用这些预定义的payload去替换http请求中的参数值(可以是请求的任意字段),保存http返回数据,并对返回数据做统计分析,形成统计图表,通过人工分析统计图表来判断是否有注入漏洞。很费劲,建议不要用JbroFuzz进行Sql注入漏洞测试。他的价值在于很多的payload,基本上每个payload对应一种注入方法,可以作为Sql注入学习和手工测试的参考。

除了Sql注入,JRoFuzz还可以进行其他多种Web应用程序相关的测试例如:XSS,LDAP注入,XML注入等。

 -------------------------------------------------------------------------------------------

SqlPowerInjector:

 悲惨,真不好用。没有其他评价。

-------------------------------------------------------------------------------------------

网站啄木鸟

能发现简单的注入漏洞。wireshark抓包可见,他构造的sql注入payload仅仅是简单的"and 1=1--","and1>1--"等。 在发现漏洞后啄木鸟猜表面的能力也很弱,只是依靠查询MS-sql和Oracle的user table来获取用户表名。

 

实际测试结果

以下是8个漏洞url,用于测试Sqlmap,Sqlix,JBroFuzz,网站啄木鸟。即使我人工分析JBroFuzz统计数据,没有发现注入漏洞的线索。具体结果看下表:

Sqlmap 啄木鸟 SqliX  http://www.2cto.com /news.php?id=92

Sqlmap 啄木鸟 SqliX  http://www.2cto.com /article.asp?ID=102&title=Fast%20food%20marketing%20for%20children%20is%20on%20the%20rise

Sqlmap 啄木鸟 SqliX  http://www.2cto.com /article.asp?id=1969

Sqlmap No    SqliX http://extension.Target.edu/extensioninfonet/article.asp?id=3602

Sqlmap No    SqliX  http://school.Target.com/tools/nutrition-education/view.php?id=23945657

Sqlmap No    SqliX  http://www.2cto.com /ebookprint.php?id=245

Sqlmap No    SqliX  http://www.2cto.com/******-nutrition-facts.php?id=21019

Sqlmap No    SqliX  http://www.2cto.com /******/artinfo.php?id=6534

 

最后结果:Sqlmap是个很好的Sql注入测试工具。

见笑了,给自己的总结,供大家参考。

 

目录
相关文章
|
28天前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
77 1
|
28天前
|
SQL 安全 测试技术
墨者学院sql手工测试记录
墨者学院sql手工测试记录
|
29天前
|
安全 程序员 网络安全
Kali渗透测试:对软件的溢出漏洞进行测试
Kali渗透测试:对软件的溢出漏洞进行测试
34 1
|
2月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
109 5
|
22天前
|
SQL 运维 安全
怎样可以找到SQL漏洞:技巧与方法详解
SQL漏洞,特别是SQL注入漏洞,是Web应用中常见的安全威胁之一
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
58 5
|
2月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
99 1
|
2月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
45 1
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
39 3
|
2月前
|
安全 Java 应用服务中间件
渗透测试-JBoss 5.x/6.x反序列化漏洞
渗透测试-JBoss 5.x/6.x反序列化漏洞
49 14