什么是Apache日志
Apache日志分析是指对Apache HTTP服务器生成的日志文件进行解析、处理和挖掘,以获取有关服务器性能、用户行为、安全事件等方面的信息。Apache日志通常包括访问日志(access log)和错误日志(error log),分析这些日志有助于优化服务器性能、识别潜在威胁和改进用户体验。
主要日志类型
-
访问日志(Access Log):
-
记录每个HTTP请求的详细信息,如客户端IP、请求时间、请求方法、请求资源、HTTP状态码、响应大小等。
-
示例:
192.168.1.1 - - [10/Oct/2023:14:55:36 +0000] "GET /index.html HTTP/1.1" 200 1024
-
-
错误日志(Error Log):
-
记录服务器处理请求时遇到的错误,如文件未找到、权限问题等。
-
示例:
[Tue Oct 10 14:55:36.123456 2023] [error] [client 192.168.1.1] File does not exist: /var/www/html/missing.html
-
第一题
我们先去apache目录下看看日志
cd /var/log/apache2
可以看到有一个备份文件,access.log.1
我们查看一下
发现有几千上万条信息,看得得用过滤命令了
cut -d- -f 1 access.log.1|uniq -c | sort -rn | head -20
1. cut -d- -f 1 access.log.1
-
cut
:用于从文本中提取特定字段。 -
-d-
:指定字段分隔符为-
。 -
-f 1
:提取第一个字段。 -
access.log.1
:要处理的日志文件
2. uniq -c
-
uniq
:用于过滤或统计连续重复的行。 -
-c
:在每行前加上该行重复出现的次数。
作用:
统计提取的字段中连续重复的行及其出现次数。
注意:
uniq
只能处理连续重复的行,因此在使用 uniq -c
之前,通常需要先对数据进行排序(例如使用 sort
)。
3. sort -rn
-
sort
:用于对文本行进行排序。 -
-r
:按降序排序。 -
-n
:按数值大小排序。
作用:
将 uniq -c
的输出按出现次数从高到低排序。
4. head -20
-
head
:输出文件的前几行。 -
-20
:输出前 20 行。
作用:
从排序后的结果中提取出现次数最多的前 20 个字段及其次数。
cat 和 cut 的区别
cat
和 cut
是 Linux 系统中常用的文本处理命令,但它们的功能和用途有所不同。
cat
cat
(concatenate)用于连接文件并打印到标准输出。它通常用于查看文件内容、合并文件和创建文件。
cut
cut
用于从文件的每一行中提取指定的部分。它通常用于处理列格式数据,比如从 CSV 文件中提取某些列。
两者区别:
-
用途不同:
-
cat
主要用于连接和显示文件内容。 -
cut
主要用于从文件中提取特定的列或字段。
-
-
功能不同:
-
cat
可以将多个文件内容合并输出到一个文件或标准输出。 -
cut
可以根据指定的字符位置、字节位置或分隔符提取部分内容。
-
-
常见用法不同:
-
cat
常用于快速查看文件内容或合并文件。 -
cut
常用于处理表格数据、日志文件等,需要提取特定列的数据。
-
可以看到192.168.200.2是访问最多的
那么第一题的答案就是
flag{192.168.200.2}
第二题
浏览器指纹是一种用于识别和跟踪用户浏览器的方法。它通过收集浏览器和设备的各种信息来创建一个独特的标识符,即“指纹”。这个指纹可以用于识别用户,即使他们没有登录或使用 cookies。以下是关于浏览器指纹的详细说明:
浏览器指纹的组成
浏览器指纹通常由以下信息组成:
-
用户代理字符串(User Agent String):
-
包含浏览器类型、版本、操作系统等信息。
-
-
屏幕分辨率和颜色深度:
-
屏幕的宽度、高度和颜色设置。
-
-
时区和语言设置:
-
用户所在的时区和浏览器的语言偏好。
-
-
安装的插件和扩展:
-
浏览器中安装的插件和扩展列表。
-
-
字体列表:
-
系统中安装的字体列表。
-
-
Canvas 指纹:
-
通过 HTML5 Canvas 元素生成的图像数据,因硬件和软件的不同而有所差异。
-
-
WebGL 指纹:
-
通过 WebGL 渲染的图形数据,反映 GPU 和驱动程序的差异。
-
-
音频上下文指纹:
-
通过 Web Audio API 生成的音频处理数据。
-
-
HTTP 请求头信息:
-
包括 Accept、Accept-Language、Accept-Encoding 等头信息。
-
-
硬件信息:
-
如 CPU 核心数、内存大小等。
-
我们通过第一题已经知道了黑客的IP,我们直接筛选出来
cat access.log.1 | grep 192.168.200.2 | more
我们复制出来进行MD5加密
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/53
7.36
我们就得到了第二题的答案
flag{2D6330F380F44AC20F3A02EED0958F66}
第三题
我们直接写命令进行筛选就好了
cat access.log.1 | grep '/index.php' | wc -l
index为什么要加/,这样表示当前目录下的index.php,因为万一别的地方也有呢?
wc -l :用于统计次数
第三题的答案就出来了
flag{27}
第四题
cat access.log.1 | grep '192.168.200.2 - - ' | wc -l
为什么要加上 --
这是区别,所以第四题的答案也出来了
flag{6555}
第五题
直接用命令
cat access.log.1 | grep "03/Aug/2023:08:" | awk '{print $1}' | sort | uniq -c | wc -l
-
cat access.log.1
:读取日志文件。 -
grep "03/Aug/2023:08:"
:过滤出 2023 年 8 月 3 日 8 点的日志行。 -
awk '{print $1}'
:提取每行的第一个字段(IP 地址)。 -
sort
:对 IP 地址进行排序。 -
uniq -c
:统计每个 IP 地址的出现次数。 -
wc -l
:统计不同 IP 地址的数量。
得到答案
flag{5}