怎么验证后台mysql 怎么检查mysql是否安装成功( 二 )


下图是笔者系统中SQLmap正在对指定的请求进行检测时显示的数据库列表:
首先它会确定给定的参数是否可注入 。根据本文演示的情况,我们已经设置OWASP mutillidae的安全性为0,因此这里是可注入的,同时SQLmap也检测到后台数据库DBMS可能为MYSQL 。
如上图所示,工具识别后台数据库可能为MYSQL,因此提示用户是否跳过其它类型数据库的检测 。
“由于本文在演示之前已经知道被检测数据库是MYSQL,因此这里选择跳过对其它类型数据库的检测 。”
之后询问用户是否引入(include)测试MYSQL相关的所有payload,这里选择“yes”选项:
测试过一些payloads之后,工具已经识别出GET参数上一个由错误引起的注入问题和一个Boolean类型引起的盲注问题 。
之后显示该GET参数username是一个基于MYSQL union(union-based)类型的查询注入点,因此这里跳过其它测试,深入挖掘已经找出的漏洞 。
至此 , 工具已经识别出应该深入挖掘的可能的注入点:
接下来,我把参数username传递给SQLmap工具,以对其进行深入挖掘 。通过上文描述的所有注入点和payloads,我们将对username参数使用基于Boolean的SQL盲注技术,通过SQLmap中的–technique选项实现 。其中选择如下列表中不同的选项表示选用不同的技术:
B : 基于Boolean的盲注(Boolean based blind)
Q : 内联查询(Inline queries)
T : 基于时间的盲注(time based blind)
U : 基于联合查询(Union query based)
【怎么验证后台mysql 怎么检查mysql是否安装成功】E : 基于错误(error based)
S : 栈查询(stack queries)
本例中也给出了参数名“username” , 因此最后构造的命令如下:
SQLmap –r ~root/Desktop/header.txt – -technique B – -p username – -current-user
这里-p选项表示要注入的参数,“–current-user“选项表示强制SQLmap查询并显示登录MYSQL数据库系统的当前用户 。命令得到输出如下图所示:
同时也可以看到工具也识别出了操作系统名,DBMS服务器以及程序使用的编程语言 。
“”当前我们所做的就是向服务器发送请求并接收来自服务器的响应 , 类似客户端-服务器端模式的交互 。我们没有直接与数据库管理系统DBMS交互,但SQLmap可以仍识别这些后台信息 。
同时本次与之前演示的SQL注入是不同的 。在前一次演示SQL注入中,我们使用的是前缀与后缀,本文不再使用这种方法 。之前我们往输入框中输入内容并等待返回到客户端的响应,这样就可以根据这些信息得到切入点 。本文我们往输入框输入永远为真的内容,通过它判断应用程序的响应,当作程序返回给我们的信息 。“
结果分析
我们已经给出当前的用户名,位于本机,下面看看它在后台做了什么 。前文已经说过,后台是一个if判断语句 , 它会分析该if查询,检查username为jonnybravo且7333=7333,之后SQLmap用不同的字符串代替7333,新的请求如下:
page=user-info.php?username=’jonnybravo’ AND ‘a’='a’ etc..FALSE
page=user-info.php?username=’jonnybravo’ AND ‘l’='l’ etc..TRUE
page=user-info.php?username=’jonnybravo’ AND ‘s’='s’ etc..TRUE
page=user-info.php?username=’jonnybravo’ AND ‘b’='b’ etc..FALSE
如上所示,第一个和最后一个查询请求结果为假,另两个查询请求结果为真 , 因为当前的username是root@localhost,包含字母l和s,因此这两次查询在查询字母表时会给出包含这两个字母的用户名 。
“这就是用来与web服务器验证的SQL server用户名 , 这种情况在任何针对客户端的攻击中都不应该出现 , 但我们让它发生了 。”

推荐阅读