# 题目 1
1. 有多少 IP 在爆破主机 ssh 的 root 帐号,如果有多个使用 "," 分割 小到大排序 例如 flag {192.168.200.1,192.168.200.2}
echo "flag{"$(cat /var/log/auth.log* | grep -a "Failed password for root" | cut -d " " -f 12 | uniq | sort | tr '\n' ','| sed 's/,$//' | awk '{print $0 "\n"}')"}" |
flag: flag{192.168.200.2,192.168.200.31,192.168.200.32}
思路:
- 读取日志
- 通过关键字筛选出登录失败的记录
- 排序去重
- 将末尾换行符转换为
,
- 去除末尾的
,
- 添加一个换行符
# 题目 2
2.ssh 爆破成功登陆的 IP 是多少,如果有多个使用 "," 分割
echo "flag{"$(cat /var/log/auth.log* | grep -a "Accepted" | cut -d " " -f 12 | uniq | grep -v $(echo $SSH_CLIENT | cut -d " " -f 1))"}" |
flag: flag{192.168.200.2}
思路:
- 关键字
Accepted
筛选出登录成功的记录 - 提取 IP 地址
- 去重
- 去除 SSH 客户端的 IP 地址
# 题目 3
3. 爆破用户名字典是什么?如果有多个使用 "," 分割
root@ip-10-0-10-3:~# echo "flag{"$(cat /var/log/auth.log* | grep -a "Failed password" | grep -v "Jun" | awk '{if ($9 == | |
"invalid" && $11 != "from") {print $11} else {print $9}}'| sort | uniq | grep -v invalid | tr '\n' ','| sed 's/,$//')"}" |
flag: flag{hello,root,test1,test2,test3,user}
思路:
- 关键字
Failed password
提取登录失败的记录 - 关键字
Jun
去除当天的记录 - 根据特征
invalid
判断输出用户名位置 - 分类去重
- 去除
invalid
无效用户名(我的逻辑不严谨 - 换行符换
,
,去除末尾的,
flag 顺序不对,手动调整了发现是 flag{user,hello,root,test3,test2,test1}
注意我的答案里面排除了本次登录的记录,所以 Jun
要换成今天的
# 题目 4
4. 成功登录 root 用户的 ip 一共爆破了多少次
cat /var/log/auth.log* | grep -a "Failed password for root" | grep $(cat /var/log/auth.log* | grep -a "Accepted" | cut -d " " -f 12 | uniq | grep -v $(echo $SSH_CLIENT | cut -d " " -f 1)) | wc -l |
flag: flag{4}
思路:
- 筛选登录失败的记录
- 提取登陆成功记录中的 IP,并使用该 IP 进一步筛选
- 提取 IP,去重
- 去除本 SSH 客户端 IP
- 统计条数
flag: flag{4}
# 题目 5
5. 黑客登陆主机后新建了一个后门用户,用户名是多少
cat /var/log/auth.log* | grep -a "useradd" | grep -a "linux-rz" | grep -o 'name=[^,]*' | cut -d= -f2 | uniq |
flag: flag{test2}
思路:
- 通过 "useradd" 特征提取用户添加行为
- 看到了
linux-rz
用户,其他记录是本地连接,所以把他的记录单独提取出来 - 提取用户名并去重