espcms代码审计第一弹
以前的代码审计都是在CTF比赛题里面进行对于某一段代码的审计,对于后端php整体代码和后端整体架构了解的却很少,所以有空我都会学习php的代码审计,以提高自己
环境就直接用的是phpstudy,学习的前期对于环境的搭建以能够满足我们学习的需求即可,没有必要将每个组件分开安装,反而本末倒置了。
使用的代码审计工具是 Seay源代码审计系统
同时参考书籍也是尹毅的 《代码审计-企业级web代码安全架构 》
作者的博客:
https://seay.me/
espcms是2014版本的。
我们使用seay代码审计工具
常见的代码审计思路有以下四种:
1,根据敏感关键词回溯参数传递过程
2,查找可控变量,正向追踪变两个传递过程
3,寻找敏感功能点,通读功能点代码
4,直接通读全文代码
espcms的代码审计,我们跟书中一样,使用对于敏感函数回溯参数过程。

先按照书上审计的过程走一遍,我们再自己根据敏感函数寻找一些漏洞
我们找到

22条提示我们可能存在sql注入漏洞,继而我们点击该条

可以看到这里将我们传入的$parentid代入$sql语句中进行查询,而$parentid变量的值是在oncitylist()函数里面没有进行设么过滤,传参过来的函是accept()

这里仅对$parentid变量进行了是否为空的检测。

右键定位accept()函数

可以看到accept函数里面的内容
在这个位置对于输入的$k进行了daddslashes函数,daddslashes函数实际上是包装之后的addslashes函数

即对于我们输入的parentid参数输入的单引号等预定义字符进行过滤,不过之前的$sql语句里面我们发现

我们可以可以发现对于$parentid参数没有单引号进行闭合,所以 daddslashes 实际上没有起到任何作用。
如果这个语句写成下边这种情况:
$sql = "select * from $db_table where parentid='$parentid'";
同时还是像之前一样使用了addslashes()函数,那么除非有宽字节注入或者其他的特殊情况,不然我们就不能进行注入了。
我们发现这里有注入之后,可以看到该函数在important这个类里面

于是我们全局变量搜索出现了important类的位置,重点关注的是new 了important类的地方

可以看到在adminsoft/index.php这个页面new 了important这个类

点击之后可以看到在index.php页面$archive和$action这两个变量都有默认的值,我们在本地搭建的网站不输入参数直接访问就可以看到(当然在代码的逻辑里面也可以很清楚看出)

可以看到当我们没有任何参数输入的时候,archive=adminuser&action=login
但是实际上我们是想

调用important类里面的oncitylist函数,同时传递一个parentid的值。

在这里传入的$action与’on’字符串进行连接,组合成为新的$action,所以我们传入的$action=citylist,这里我们令$archive也为citylist,本来觉得archive为何值不重要,不过用其他array组里面的值就会报错,应该是代码里面其他地方做了限制。
因为是在admin的界面下进行的注入,所以我们需要先登录,再在url输入我们构造的payload

现在可以看到已经出现了citylist
不过我们的目的是传递parentid参数,

因为我们访问成功之后实际上已经调用了important类里面的oncitylist方法,不过因为我们没有主动传递parentid的值,所以其默认为1而已。
于是我们手动使用get方法传递parentid的值

构造payload之后,我们可以看到现在返回页面的citylist只剩下了北京,根据我们之前的分析,此处parentid存在不需要单引号闭合的sql注入漏洞,于是我们开始常规注入

字段数为5
回显位置: 3

在3的位置查询数据库名字和用户名


OK,跟着书上的漏洞复现成功,第一弹结束,第二弹的分析过程就自己分析吧,站在巨人的肩膀上固然会看的很远,但是更需要自己向上攀登才能到达更远的地方
espcms代码审计第一弹的更多相关文章
- typecho流程原理和插件机制浅析(第一弹)
typecho流程原理和插件机制浅析(第一弹) 兜兜 393 2014年03月28日 发布 推荐 5 推荐 收藏 24 收藏,3.5k 浏览 虽然新版本0.9在多次跳票后终于发布了,在漫长的等待里始终 ...
- 我的长大app开发教程第一弹:Fragment布局
在接下来的一段时间里我会发布一个相对连续的Android教程,这个教程会讲述我是如何从零开始开发“我的长大”这个Android应用. 在开始之前,我先来介绍一下“我的长大”:这是一个校园社交app,准 ...
- Hadoop基础-MapReduce的工作原理第一弹
Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...
- Java基础-程序流程控制第一弹(分支结构/选择结构)
Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...
- RMQ_第一弹_Sparse Table
title: RMQ_第一弹_Sparse Table date: 2018-09-21 21:33:45 tags: acm RMQ ST dp 数据结构 算法 categories: ACM 概述 ...
- codechef 营养题 第一弹
第一弾が始まる! 定期更新しない! 来源:http://wenku.baidu.com/link?url=XOJLwfgMsZp_9nhAK15591XFRgZl7f7_x7wtZ5_3T2peHh5 ...
- 好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字
原文:好玩的WPF第一弹:窗口抖动+边框阴影效果+倒计时显示文字 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csd ...
- [Git] 002 初识 Git 与 GitHub 之加入文件 第一弹
在 GitHub 的 UI 界面使用 Git 往仓库里加文件 第一弹 1. 点击右上方的 Create new file 2. 在左上方填入文件名,若有后缀,记得加上 3. 页面跳转,此时已有两个文件 ...
- [Markdown] 03 进阶语法 第一弹
目录 1. YMAL 题头 2. 缩写 3. 强调 4. 自定义 <div> 标签 5. <cite> 标签 5. <code> 与 <br> 标签 6 ...
随机推荐
- 经典c程序100例==41--50
[程序41] 题目:学习static定义静态变量的用法 1.程序分析: 2.程序源代码: #include "stdio.h" varfunc() { int var=0; sta ...
- Flutter 开发从 0 到 1(五)源码
Flutter 开发从 0 到 1 明天开始又要上班了,你的假期任务完成如何啊?由于平时加班太多了,实在挤不出更多时间,从开始想用 Flutter <Flutter 开发从 0 到 1(一)需求 ...
- 都知道的copy_from_user
Q:一直知道内核和用户态的数据交互前都需要 校验地址的合法性,一般都用copy_from/to_user完成数据拷贝,那么为什么要这样呢?? A:看了一些blog以及Stack Overflow 主要 ...
- 测试_appium测试工具
一.Appium介绍 Appium是一个开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用. 1.Appium 理念 Appium是基于以下的四个理念设计来满足移动平 ...
- Python_列表相减(判断长度后长的减短的)
#定义一个方法,可进行列表相减 class V(object): def __init__(self,*value): self.value=value def __sub__(self,other) ...
- HBuilderX SVN地址更改(SVN服务器IP地址变更)
HBuilderX编辑器中无法修改SVN地址,需要手动在SVN工具中修改 修改步骤: 1.右键编辑器中的SVN项目,选择打开文件所在目录 2.目录中空白处右键,选择TortoiseSVN --> ...
- rocketmq详解-[个人版]-第一章
一.消息队列概述 1.1.消息队列由来 在运维场景中,我们经常会存在如下场景:一旦出现S1异常,C1将因为S1的影响而异常(C为客户端,s为服务端) 当然可以通过添加多个S的方式,实现高可用.但这样会 ...
- 有关String的那点事
(1)String str1 = "abc"; System.out.println(str1 == "abc"); 步骤: 1) 栈中开辟一块空间存放引用st ...
- [原题复现+审计][网鼎杯 2018] WEB Fakebook(SSRF、反序列化、SQL注入)
简介 原题复现: 考察知识点:SSRF.反序列化.SQL注入 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题 过 ...
- Folx的分类标签规则怎么自定义
一个全新的标签,没有任何对应的标签规则,只是一个空有躯壳没有灵魂的标签,是无法用于文件自动分类的,那么如何根据大家的自身需求,创建一个相对应的标签分类规则呢? 下面小编将使用Folx 5版本为大家讲解 ...