所有测验请在授权的地方进行测验,遵守法律

1.什么是日志

简单来说,Web服务器(如Nginx、Apache、IIS、Tomcat)在处理每一个HTTP请求时,都会自动"登记"一条记录。

  • 工作原理:Web服务器的内部有一个专门负责日志的模块或"阀门"。当它收到请求并返回响应后,会立即把这次交互的关键信息(时间、客户端IP、请求内容、状态码等)格式化成一条文本,追加到日志文件里。
  • 存储位置:日志文件通常存放在服务器文件系统中的特定目录下,且这个目录一般不在网站根目录(如 /www/html)里,以避免被攻击者通过Web直接访问。
    • Nginx/Apache (Linux):通常位于 /var/log/nginx//var/log/apache2/ 目录下。
    • IIS (Windows):默认在 %SystemDrive%\inetpub\logs\LogFiles\ 目录下。
    • Tomcat:一般在 $TOMCAT_HOME/logs 目录下。
    • 其他:像Django这类应用框架也可能有自己的日志配置。

下面这是典型的一个日志行

192.168.1.100 - - [10/May/2026:13:45:22 +0800] "POST / HTTP/1.1" 200 5324 "https://971f9656-015c-4b4c-abe0-1eeae3d7dd09.challenge.ctf.show/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) ... Chrome/122.0.6261.95 Safari/537.36"

2.日志文件包含攻击思路:
1.php://input

2.web服务器在处理每一个http请求时,都会自动“登记”一条记录

3.查看该条http响应头(服务端)server头的信息,发现是nginx(或者其他头)

4.找对应的一般日志存放路径

5.nginx为:/var/log/nginx/access.log

6.将一句话木马放到user-agent头(原因:选择 User-Agent 进行注入,正是因为它“无关紧要”——对请求的正常功能、性能、以及服务器的响应结果几乎没有影响,但它的内容却会被服务器忠实地记录到日志文件中。):<?php eval($_POST[1]);?>

7.当服务器执行读操作时会执行这一句话木马

8.后端简要解释:

include的主要行为:

包含一个 PHP 文件时:include 会切换成 PHP 解析模式,执行该文件中所有的 PHP 代码(<?php ... ?> 之间的内容),然后将执行结果(如果有)返回给 include 语句所在的位置。文件中的非 PHP 代码(HTML 文本)会直接输出

当包含一个非 PHP 文件(如 .txt、日志文件)时:PHP 引擎会读取该文件的全部内容,并尝试将其中的任何 PHP 标签(<?php ... ?>)作为代码来执行。无法被识别为 PHP 代码的部分,会直接作为文本字符串处理。

这就是为什么将 <?php eval($_POST[1]);?> 写入日志文件,再通过 include 包含它,能够实现 RCE(远程控制) 的根本原因。

7.POST[1],1是参数名,$_POST[1],即将参数名的值获取存到变量post然后被执行,此时就可以通过把想要执行的php代码放到1的值中,每次获取file的数据时,post[1]都会被执行

8. 1=system("ls");

1=system("tac flag.php");

9.Content-Type: application/x-www-form-urlencoded 要求数据是 key1=value1&key2=value2 格式

10.攻击链条恶意 User-Agent写入日志文件文件包含漏洞PHP 执行日志内容触发 eval()RCE → 服务器沦陷

4.php://input

代表攻击者试图不通过 $_POST 变量,而是直接从HTTP请求的原始Body(正文)中读取数据。

body(请求体) 请求体空一行下面

  • php://input 是 PHP 提供的一个只读流。
  • 它的作用是:访问 HTTP 请求的原始内容。
  • $_POST 的区别:当 Content-Typemultipart/form-data(表单上传文件)时,php://input 无效;但在其他情况(如 JSON、XML、纯文本数据)下,它可以读取整个请求体。
  • 核心目的是:绕过网站对标准表单参数的检测,直接植入恶意代码。

即如果用上面的post参数很容易被一些防火墙给拦截,用php://input可以直接读取请求体,如果此时请求体已经是一句话木马就会被执行

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐