界面简洁 不错不错
查看文件那可以看到一个**?file= 感觉有任意文件读取漏洞**
nice 可以 拿到file.php 然后有这个知道还有function.php class.php
那些文件的源码
链接:https://pan.baidu.com/s/1cNEZut1YESQmT5bI2YCduQ
提取码:1234
太长了就不放了
文件包含被过滤了 class.php那边 确实过滤了f1ag.php
1 | public function _show() |
连unseriaze() 都没有 但是看到了个phar感觉可以利用
首先得找到触发的魔术方法
C1e4r类有_ _destruct() 在对象被销毁时调用 程序结束时会被自动调用 销毁对象
1 | public function __destruct() |
还有这个echo也可以利用
show类中_ _toString()
_ _toString 将一个对象转化成字符串的时候自动调用 比如echo print 会被调用并返回一个字符串
1 | public function _ _toString() |
利用这个$this
Test类中_ _get()
_ _get() 当未定义的属性或没有权限访问的属性被访问时会调用该方法
1 | public function __get($key) |
利用$this->get —>$this->file_get($value) —>base64_encode(file_get_contents($vale));
调用了file_get_contents 函数的file_get函数很重要 一般到调用了file_get_contents就可以认为链的结束
触发:
C1e4r::destruct()->show::toString()->test::get()
1 | <?php |
phar后缀被禁止了 得改成gif
1 | $filename = md5($_FILES["file"]["name"].$_SERVER["REMOTE_ADDR"]).".jpg"; |
得知道一下被改后的文件名
1 | aaa.gif222.90.67.205 md5 一下 |
然后发现一个很神奇的 上传目录是开着的 ┗|`O′|┛ 那都不用算了
1 | file.php?file=phar://upload9030a3b2a4bb01f912500bf84dcc370d.jpg |
得到base64加密的内容 解码一下就能拿到flag了