SQL注入实例分析---Metasploit渗透测试魔鬼训练营

使用Sqlmap的时候,尽管得到了想要的数据,但是却不知道是怎样通过构造查询语句,检索那些隐藏在后台数据库中的数据。

打开BT5,打开浏览器输入:10.10.10.129,通过SQL注入进入DVWA页面。默认的安全防护难度是高级,我们需要把安全防护级别改成低级并保存配置。
在这里插入图片描述

打开SQL Injection按钮,在输入框中输入“1”
在这里插入图片描述

在输入框中输入“’”
在这里插入图片描述

提交后会出现错误显示:
在这里插入图片描述
通过错误显示,数据库发现不正确的字符“’”,这种情况表明很可能存在注入漏洞,同时还暴露了后台数据库是Mysql。

后台的查询语句可能是这样设置的:select 列 from 表 where ID=?,如果在SQL语句后面加上“’or’ 1’=’1 ‘–’”,这样数据表列中的每一行都将显示出来。“–”是注释符,将其后面的所有语句都忽略。
在这里插入图片描述
这样,我们便得到了所有列的数值。
总结一下,①首先发现存在SQL注入漏洞②然后找到一个正确的终止字符构造正确的SQL语句并执行,找到返回所有行的办法③最后找到特殊的注释SQL字符忽略剩余的SQL语句。

既然已经找到了select语句的执行办法,接下来可以使用UNION语句查找更多的信息并显示出来,同时还可以使用concat()函数让检索出来的语句以行的形式显示。

为了使得链接了UNION的select语句没有错误,不同的UNION的select字句列数必须是相同的,但是我们并不知道表中的列数,例如,输入‘union select 1–’后会出现错误
(UNION是并操作,SQL使用UNION把查询结果并起来,并且去掉重复的元组)
在这里插入图片描述

输入“union select 1,2–”后得到:
在这里插入图片描述
这说明我们对数据表的列数猜解正确,在这个例子中数据表有两列,接下来我们使用语句查询出一些有意义的数据。
输入:“’union select 1,table_name from INFORMATION_SCHEMA.tables – ’’”

(INFORMATION_SCHEMA数据库是MySQL系统自带的数据库,它就像是MySQL实例的一个百科全书,记录了数据库中大部分我们需要了解的信息,比如字符集,权限相关,分区,表信息,参数,锁和事务等等。通过information_schema我们可以窥透整个MySQL实例的基本信息,甚至优化调优,维护数据库等。Information_schema.tables存储了数据表的元数据信息)
在这里插入图片描述
在这里插入图片描述

通过查询INFORMTION_SCHEMA系统表,就可以看到这个MySQL数据库中每一个表的名字以及每一列的名字等,最后两行(guestbook、users)应该是DVWA所使用的表。那么我们就列出这两个表,输入“’union select 1,column_name from INFORMATION_SCHEMA.columns where table_name=’users’ – ’”,检索数据库的user表,列出user表的内容:
在这里插入图片描述

我们发现user表中有6列数据,很明显,其中有我们最感兴趣的password列,输入“’union select null,password from users – ‘”,这样就得到了密码的MD5值,虽然我们在前面已经得到了用户名和密码,但是这样能够展示更多的数据库操作细节
在这里插入图片描述

最后使用concat()函数将所有信息都列出来:“’union select password,concat(first_name, ‘ ‘, last_name, ‘ ‘, user) from users – ’”
在这里插入图片描述

这样就完成了一次基本的SQL注入过程,了解了基本的原理。

猜你喜欢

转载自blog.csdn.net/aaqian1/article/details/88936052