PHP序列化整理
phar&&pop链
phar://是数据流的包装器,相当于压缩
本地实验
1 |
|
然后会在php文件下自动生成一个phar文件

看例题
[CISCN2019 华北赛区 Day1 Web1]Dropbox
开头看见注册登录(补药急着想到sql注入),按顺序登录后看到一个上传文件页面(想到一句话木马)

操作顺序:打开bp–>上传木马.php–>bp上修改Content-Type: image/jpeg,修改filename后缀为phtml,php5等
上传后发现有下载和删除的按钮
点击下载时,网页会从服务器中读取文件(想到文件包含)
文件包含特点:路径可控
- include(),require()函数中间有内容可以输入
- …/路径遍历
操作顺序:打开bp–>点击下载

可以看见下载请求是直接以明文的形式放在请求体中(想到能否可以读取系统文件)
所以放到repeater里面测试一下

我趣!读取成功
直接读flag



都不存在,说明不叫这个名字或者有过滤
想到过滤就想到源码,所以想到通过下载读取网页源码

为什么源码文件都没有,补药爆炸,因为读取文件的方法是测试通的,index也是肯定有的,所以想到沙盒
什么是沙盒
1 | /var/www/ |
@mkdir($sandbox);
尝试创建一个以 $sandbox(MD5 哈希值)为名称的目录。
chdir($sandbox);
将当前工作目录切换到刚刚创建的沙盒目录中。这意味着接下来的任何文件操作(如果有的话)都会在这个隔离的目录中进行。
所以想到把目录跳转到了沙盒中,所以向上跳转

向上遍历两次成功了,这里我还是分不清到底哪种类型的题可以无脑跳转,我试了第三次就不行了
下载index.php
以下是思路和代码解释,全部包含在内了
1 |
|
看到包含一个class.php,下载class.php
1 |
|
在抓包中看到还有别的源码文件
delete.php
1 |
|
download.php
1 |
|
upload.php
1 |
|
根据以上思路构建exp
1 |
|
把生成的phar文件在upload上传


???做到这一步就要爆炸了

注意后缀是jpg,不是phar

成功读取flag
如有错误,多多指教