什么是Apache日志
Apache日志是Apache Web服务器在处理HTTP请求时记录的所有事件的详细信息。Apache是全球最受欢迎的Web服务器软件之一,支持约30.2%的所有活跃网站。Apache通过记录每次请求的信息,包括时间、来源IP、请求的资源等,帮助分析和排查问题。
Apache日志主要分为两类:访问日志和错误日志。
- 访问日志:记录了所有访问服务器的远程机器的地址、浏览者访问的资源、浏览时间、使用的浏览器等信息。通过分析访问日志,可以了解网站的访问情况、流量分布、用户行为等,从而优化网站性能和用户体验。
- 访问服务器的远程机器的地址:可以得知浏览者来自何方
- 浏览者访问的资源:可以得知网站中的哪些部分最受欢迎
- 浏览者的浏览时间:可以从浏览时间(如工作时间或休闲时间)对网站内容进行调整
- 浏览者使用的浏览器:可以根据大多数浏览者使用的浏览器对站点进行优化
- 错误日志:包含了Web服务器在处理请求时遇到的错误信息,如失效链接、CGI错误、用户认证错误等。错误日志使用不同的日志级别(如level、emerg、alert、crit、error、warn、notice、info、debug)来表示错误的严重程度。
打开靶场环境
利用ssh root@IP进行连接
第一题
1.先去apache目录下看一下信息
可以看到有一个备份文件,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 常用于处理表格数据、日志文件等,需要提取特定列的数据。
然后便知道了他访问最多的ip是192.168.200.2,所以第一题flag为这个
flag{192.168.200.2}
第二题
由于我们第一题已经知道了他的ip所以直接筛选
cat access.log.1 | grep 192.168.200.2 | more
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb
Kit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
将其进行MD5加密获得第二个flag
flag{2D6330F380F44AC20F3A02EED0958F66}
第三题
也是直接筛选
cat access.log.1 |grep '/index.php' | wc -l
wc -l 用来统计次数的
所以第三个flag为27
flag{27}
确实是27个但是提交flag为25,我也不知道怎么回事
flag{25}
第四题
一样
cat access.log.1 | grep '192.168.200.2 - - ' | wc -l
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
flag{5}