BUUCTF [极客大挑战 2019]Secret File1
BUUCTF [极客大挑战 2019]Secret File1
ZhEYuAN信息收集 抓包
提示很明显,我们找到secr3t.php
不想当脚本小妹,所以要仔细研究代码
1 | <html> |
详解
error_reporting(0);
:这个函数用于设置PHP的错误报告级别。参数0
表示关闭所有错误报告,即使PHP执行过程中出现错误,也不会在浏览器上显示任何错误信息。这在生产环境中常用来避免泄露敏感信息。
1 | if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){ |
strstr($file, "../")
:strstr()
函数用于查找字符串中是否包含指定的子字符串,返回第一次匹配到的位置。如果在$file
中找到了"../"
(即试图进行目录遍历的字符串),它会返回true
。stristr($file, "tp")
:stristr()
函数与strstr()
类似,但是它忽略大小写。这里它用来检查$file
中是否包含"tp"
,这可能是一个恶意文件名或路径的一部分。stristr($file, "input")
:同样的,检查文件名中是否包含"input"
,这是防止恶意文件名中可能包含的危险字符串。stristr($file, "data")
:检查文件名中是否包含"data"
,防止潜在的文件名为data
的文件被包含,data
可能是一个敏感数据文件。if(...){...}
:如果上述任何检查条件为真(即文件名包含了这些危险的字符串),就会执行echo "Oh no!";
,输出一条错误信息,告诉用户输入的文件不合法,并使用exit()
终止脚本执行。exit()
会停止脚本执行,防止继续处理文件包含操作。
即不要包含目录穿越<../>注入恶意文件文件包含thinkphp框架漏洞
解法一 通解日志包含
1.把user-agent的内容改为马,然后访问日志文件,链接蚁剑
原理
nginx的日志文件会包含以下内容
字段 | 示例值 | 含义 |
---|---|---|
客户端IP地址 | 192.168.1.100 |
访问者的IP地址 |
用户身份验证信息 | - |
通常为空(用于HTTP认证) |
远程用户名(HTTP认证) | - |
通常为空 |
时间 | [09/Feb/2025:14:32:10 +0800] |
访问的时间(本地时区) |
请求方法 | "GET" |
HTTP请求方法,如GET 、POST |
访问的URL | "/index.php" |
访问的资源路径 |
HTTP版本 | "HTTP/1.1" |
请求使用的HTTP协议版本 |
状态码 | 200 |
HTTP响应状态码(200表示成功,404表示未找到) |
响应大小(字节) | 1024 |
响应的字节数,不包含HTTP头部 |
Referer(来源页面) | "https://example.com" |
访问者从哪个页面跳转过来的 |
User-Agent(客户端标识) | "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" |
访问者使用的浏览器或爬虫信息 |
但有时即使改掉了user-agent也不会在日志中显示,可能是以下原因
****
此时可以直接在url中写入马,本题没有过滤可以直接写
虽然页面会出错,但是仍然会被记录进日志
然后顺利的链接蚁剑
解法二 伪协议
过滤条件很简单,直接伪协议也可以
解码后得flag{43f1f81f-8bcf-4ce8-9160-4a617b007e62}