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。

本文来自企鹅号 - 全球大搜罗媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据之美

Linux Shell 从入门到删除根目录跑路指南

shell 作为一门 linux 下使用广泛的系统语言,语法简单,上手容易,但是想要用好,少犯错误,也不是那么容易的一件事,可谓虽是居家旅行之良药,但也是杀人灭...

26180
来自专栏cs

linux 学习笔记七

来自实验楼的学习笔记,文字基本复制,粘贴。 ? 下载了一个录制gif图的软件,还不错 参考与:在Linux(Ubuntu)下超好用的录屏gif软件!!...

36150
来自专栏雪胖纸的玩蛇日常

Vue+Django2.0 REST framework 打造前后端分离的生鲜电商项目(五)商品列表页

1.1K60
来自专栏杨建荣的学习笔记

一个细小的空间问题触发的报警(r11笔记第68天)

今天有一个数据库服务器报警,报警信息是来自于一个异机备库。可以看到这台服务器空间只有300多G,而剩余空间只剩下了不到30G.所以这样一个问题就很奇怪了...

37570
来自专栏熊二哥

快速入门系列--CLR--02多线程

最近,由于基础框架的整体升级,因此需要更新所有相关项目的DLL文件。这个过程存在不小的风险,因此也对发布后的生产服务器进行了密切的监控,结果还是出现了个别应用出...

19490
来自专栏北京马哥教育

MongoDB多纬度监控方法详解

一、mongostat工具方法 mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如...

49150
来自专栏Albert陈凯

2018-08-02 IntelliJ IDEA - Debug 调试多线程程序IntelliJ IDEA - Debug 调试多线程程序

https://blog.csdn.net/nextyu/article/details/79039566

23920
来自专栏程序员的SOD蜜

.NET ORM 的 “SOD蜜”--零基础入门篇

PDF.NET SOD框架不仅仅是一个ORM,但是它的ORM功能是独具特色的,我在博客中已经多次介绍,但都是原理性的,可能不少初学的朋友还是觉得复杂,其实,SO...

30570
来自专栏FreeBuf

隐藏在证书文件中的PowerShell(一)

最近,NVISO实验室分析人员开发了某种YARA规则,利用它发现了多种恶意证书文件(.crt),这些证书文件中包含的并不是真正的认证证书,而是一个恶意的Powe...

17930
来自专栏向治洪

android 防止反编译的若干方法

第一种方式:混淆策略 混淆策略是每个应用必须增加的一种防护策略,同时他不仅是为了防护,也是为了减小应用安装包的大小,所以他是每个应用发版之前必须要添加的一项...

38580

扫码关注云+社区

领取腾讯云代金券