目录
一、测试环境
靶场介绍:国内厂商设置的玄机靶场,以应急响应题目著名。
地址:https://xj.edisec.net/challenges/29
靶机IP:161.189.68.48
环境ssh登录:root/apacherizhi
靶机简介:
二、测试目的
完成应急响应靶机,获取6个flag。熟悉apache日志。
三、操作过程
apache日志目录:/var/log/apache2
根据文件大小分析访问日志是:access.log.1
Flag1
bash
cat access.log.1 | cut -d ' ' -f 1 | sort | uniq -c | sort -nr
cat access.log.1 | awk '{print $1}' | sort | uniq -c | sort -nr
分析日志,按空格做分隔符,每一行第一个是IP。根据这一点匹配,并排序计数。
匹配第一位,使用cut和awk均可。
Flag1: flag{192.168.200.2}
Flag2
bash
cat access.log.1 | grep 192.168.200.2 | cut -d '"' -f 6 | sort | uniq -c | sort -nr
echo -n "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" | md5sum
这里的浏览器指纹中有空格,就不好用空格做分隔符去匹配了,使用双引号匹配。
echo -n参数表示不输出换行符。
Flag2: flag{2d6330f380f44ac20f3a02eed0958f66}
Flag3
bash
cat access.log.1 | grep '/index.php' | wc -l
wc -l参数表示只统计行数,进行输出。
Flag3: flag{27}
这里还有个Flag6: flag{25}
访问index.php中,有通过referer访问的,特征是/index.php前后都有空格。
原因是apache日志中有表示referer的位置,来源是/index.php的话也会被匹配到。
referrer中的/index.php有2次,27-2=25
Flag4
这里IP:192.168.200.2在flag1时同时也进行计数了。
Flag4: flag{6555}
Flag5
bash
cat access.log.1 | grep 03/Aug/2023:08: | cut -d ' ' -f 1 | sort | uniq -c | sort -nr | wc -l
cat access.log.1 | grep 03/Aug/2023:08: | awk '{print $1}' | sort | uniq -c | sort -nr | wc -l
根据日志的日期格式,筛选IP列,并统计个数。
Flag5: flag{5}
Flag6
题目有5个,flag确有6个,提交这个是正确的Flag6
Flag6: flag{25}
四、结论
熟悉apache日志的格式,以及匹配命令的使用。