[CISCN2019 华北赛区 Day1 Web1]Dropbox

[CISCN2019 华北赛区 Day1 Web1]Dropbox

考点

  • 任意文件下载

  • phar反序列化

wp

flag在/flag.txt

正常登陆注册,然后有个文件上传的功能,上传完成之后可以选择下载和删除

burp抓包,在下载的时候可以修改下载的文件,进而获取文件源码,修改为filename=../../index.php

读取download.php,发现可以进行文件读取但是读取不了flag。并且它设置了open_basedir,只能访问当前目录,/tmp和/etc

在class.php中定义了很多类

在upload.php使用白名单限制上传文件

在delete.php提供文件删除功能

上传白名单+各种类+文件读取与删除,必然是phar

上传图片,在delete.php触发phar,剩下的就是找pop链。反序列化从__destruct()入手,FileList类的太复杂了,从User类入手。比较容易发现的这个链子,但是这里只是return无法将file_get_contents的结果输出

还有就是FileList类了,User类的db为FileList类,触发FileList::__call函数,然后把close放到FileList类的funcs中,也即func,FileList类的file为File类,这样就能调用File类的close函数,读取flag,并且将结果给FileList类的results数组,$this->results["flag.txt"]["close"]="flag{***}"

exp

上传,然后在delete.php处触发phar

小结

  1. 上传白名单+各种类+文件读取与删除,考虑是phar

最后更新于