文件上传日志包含详解与CTF实战

1. 日志简介

1.1 日志介绍

日志是记录系统或应用程序运行时事件的文件。这些记录可以包括错误信息、用户活动、系统性能指标等,帮助开发者和管理员监控和排查问题。

日志通常会记录多种内容,包括:

  1. 时间戳:事件发生的具体时间。
  2. 用户代理(UA)头:浏览器或客户端的类型和版本。
  3. IP地址:发起请求的用户的IP地址。
  4. 请求方法:如GET、POST等。
  5. 请求路径:被访问的资源URL。
  6. 响应状态码:服务器对请求的响应状态(如200、404等)。
  7. 用户行为:如点击、表单提交等。

1.2 日志路径

在Apache中,默认日志路径通常是:

  • 访问日志/var/log/apache2/access.log(Debian/Ubuntu)
  • 错误日志/var/log/apache2/error.log(Debian/Ubuntu)

在NGINX中,默认日志路径通常是:

  • 访问日志/var/log/nginx/access.log
  • 错误日志/var/log/nginx/error.log

具体路径可能因系统配置而异。

2. 文件上传日志包含概述

不妨考虑这样一种思路:

  • 上传一个正常的图片,把UA头修改为后门代码,从而将它写入日志
  • 上传图片,内容写入恶意代码:包含日志文件。
  • 利用.user.ini将图片中代码包含入upload下的php文件

这样造成的结果就是:该php文件中就会包含日志内容,也就包含了后门代码

3. CTFshow Web 160

上传正常文件,将UA头修改为后门代码。再看返回包,服务器是nginx,由1.2可知日志路径(如果是默认配置的话)


上传.user.ini,将1.png的恶意代码包含入upload文件夹下php文件

上传1.png,写入包含日志文件的代码。这里需要尝试一下,会发现log被过滤了,这里用.来连接路径字符串

访问upload下的php文件,发post包,查看网页源代码(看的比较清楚)

x=system("ls ../");

x=system("tac ../flag.php");

宇宙安全声明

本博客所提供的内容仅供学习与交流,旨在提高网络安全技术水平,谨遵守国家相关法律法规,请勿用于违法用途,博主不对任何人因使用博客中提到的技术或工具而产生的任何后果负责。如果您对文章内容有疑问,可以留言私信。