SemCmsv2_4 Function_php文件过滤不严导致Sql注入
Prat 0 自白
最近考试忽略了博客的更新,这里给大家道个歉。 本来是不像发的因为审计出来的时候发现春秋有老哥已经在审计了,然后并且发出来了 不过我发现我下载的这个版本正则代码有些不同。 然后就于是就分析一下好了。
view.php
看文件第6-7行代码
include_once './Include/web_inc.php';
include_once './Templete/default/Include/Function.php';
可以看见,他是包含了两个文件,我们跟进看一下。
/Templete/default/Include/Function.php
看文件的9-32行代码
$ID=verify_id(@htmlspecialchars($_GET["ID"]));
继续看文件的551行代码
$query=mysql_query("select * from sc_products where ID =$ID ");
可以看见,他先是从GET中获取ID参数,然后带入Sql语句查询。 不过在获取参数的同时用了verify_id方法。 我们跟进看一下。
/Include/web_inc.php
在view.php文件包含了以下文件。
OK,因为用的verify_id方法,所以我们跟进一下general_function.php文件。
/Include/general_function.php
可以看见,这段正则代码明显是有缺陷的,不过在web_inc.php中同时包含了web_sql.php文件
这边的正则也无非增加了一点点难度,可以发现利用布尔盲注入还是很好绕过去的。
正则绕过
首先我们在sql语句中肯定不能出现and这类关键字。 所以我们需要想办法来进行一个代替。 在V@1n3R师傅的帮助下,我才知道还可以利用&&来代替and这种操作。
Test 1 第一步payload
首先要注意,&&在url传值中会导致被认为是参数拼接,所以需要进行一下url编码
不过当时没仔细看代码,导致了出现了个梗。 在/Templete/default/Include/Function.php文件的第9行代码中 他在获取参数的时候使用了htmlspecialchars函数,所以导致&&带入查询的时候会导致被实体编码 所以查询不成功,当时要不是实在忍不住下了个seay审计工具的mysql监测,我还真不知道问题出在哪里。 过滤单引号,hex编码下,最终payload
漏洞利用
因为比较麻烦,我就直接写了个脚本跑了,使用left函数的话会导致写poc变得更难(没逼格),于是使用了substr函数来代替。
返回结果为hex编码。 测试结果:
解码结果:root@localhost可能有人问,为啥要输出hex编码,因为这样逼格高。 不然我为啥手动写hex编码0-9@a-z呢?
获取更多网络安全资讯,尽在ChaBug。
- JAVA EE Eclipse下配置Tomcat服务器
- CentOS6.5菜鸟之旅:文件权限详解
- CMD魔法堂:支持显示UTF8编码的中文
- 【设计模式】—— 模板方法Template
- 【设计模式】—— 策略模式Strategy
- MyBatis魔法堂:即学即用篇
- 【设计模式】—— 状态模式State
- php环境无法上传文件的解决方法
- Java魔法堂:JUnit4使用详解
- Windows魔法堂:解决“由于启动计算机时出现页面文件配置问题.......”
- Java魔法堂:自定义和解析注解
- 【Hibernate那点事儿】—— Hibernate应该了解的知识
- 【Hibernate那点事儿】—— Hibernate应该了解的知识
- Java魔法堂:以Windows服务的形式运行Java程序
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- Redis 5.0.8安装
- Redis 主从搭建
- Redis 5.0.8 主从+哨兵的搭建
- ammo.js-bullet物理引擎碰撞检测
- TKE上动态部署jenkins slaves
- CVE-2017-0261及利用样本分析
- 流水的NLP铁打的NER:命名实体识别实践与探索
- Spring Boot入门系列(十七)Mybatis创建自定义mapper 实现多表关联查询!
- 让你笑的七个linux命令
- GPU并行计算之向量和
- ShardingJdbc分库分表实战案例解析(下)
- 分布式链路追踪Skywalking Skywalking 存储客户端设计
- Kubernetes 的新武器:层级命名空间
- 手撕distributed ram类型同步FIFO
- 解决PIL透明的图片放在新图片上报错