全国大学生信息安全竞赛线下赛-Web-Writeup
type
status
date
slug
summary
tags
category
icon
password
第九届全国大学生信息安全竞赛 Web攻防
比赛是8月中旬在上海进行的。这套源码一共发现了一个注入和一个后门。其实当时本来很早挖出了后门,但是补的第一波莫名其妙就把服务弄挂了,所以一直没补成,被打到最后还有两个小时,又试了一下,莫名其妙的这次就行了。
其实这个分析早就打算写,然是中途各种乱七八糟的事耽误了。源码在下面列出。侵删。
前言-环境搭建(老司机请飘过):
个人环境:Ubuntu14.04 + PHP5 + Apache + MySQL
关于压缩包中文件:ciscn
- Slim Framework
- 各文件夹放到www目录中,sql文件导入数据库。
- html/config.php中为数据库参数。两种改法,一种改文件,一种改你的数据库。此处我选择改文件。



然后访问你的搭建的网站会发现目标站是一个响应式的博客:
我们注意到此博客对URL进行了重写。因此我们要打开Apache的重写模块。给自己的博客做个伪静态的同学肯定都知道怎么弄。
至此,环境搭建完成。
初步分析
- 一共三个文件夹,其中一个叫templates,里面是一些静态模板文件,根据经验这里不会有漏洞。
- vender中装了一些让人懵逼,感觉是为了实现博客运行的基本代码。如果漏洞藏在这里面就太逆天了吧?不过有一个叫做vendor/autoload.php 的文件很敏感。但是这些都是主观臆断。因此更合适的方法是找到Slim框架并且diff一下。
- html文件夹里面有两个值得分析的文件,分别是 index.php 和 db.php 。db.php 文件似乎只是用于执行SQL语句的,那么use了它的 index.php 则是分析的重中之重。
漏洞1
我们从看似容易的 html/index.php 文件入手。当然附带着得同时分析 html/db.php。脚本最后防止了文件名的XSS。
首先尝试正常功能。注册 – 登陆 – 发Note。对应源码我们可以看一看。
不论注册还是发Note,但凡用到了insert的,均未进行过滤。因此此处可以利用。由于比赛中flag是以文件形式存在与~/flag中,我们需要利用该漏洞读取文件内容。
以下是我尝试的三种模板的文章。

同时我们看一下数据库内容:

显然,文章的显示是通过读取数据库中的template字段内容来确定我的模板文件的。由于没有做过滤,我们可以利用这里的任意读取来做文章。看看源码:
我们可以通过控制写Note时提交的temp字段来读取任意文件。当然,这里有一点小技巧。最初我试图用%00来舍弃掉文件名后面的.tpl后缀,后来一直不成功。于是我换了一个思路,即继续注入。废话不说,直接上图:

数据库中内容:

使用 /check/{title} 访问即可:

漏洞2
回到之前觉得可疑的autoload.php中。该文件代码如下:
跟踪一下:
去掉混淆:
后门分析后续再更新……
Loading...