一、一键查找flag脚本 find_flag.sh
功能:递归扫描指定目录/单个文件,精准匹配 flag{任意字符} 格式,高亮输出、显示文件路径+行数,兼容普通文件、压缩包不解析、过滤二进制垃圾文件。
#!/bin/bash
# 颜色定义
RED='\\033[0;31m'
GREEN='\\033[0;32m'
NC='\\033[0m'
# 帮助说明
usage(){
echo -e "${GREEN}使用方式:${NC}"
echo " ./find_flag.sh 文件名 # 查找单个文件"
echo " ./find_flag.sh 目录路径 # 递归查找整个目录"
echo " ./find_flag.sh # 默认递归查找当前目录"
echo -e "匹配规则:精准查找 flag{xxxx} 格式字符串\\n"
}
# 判断入参
if [ $# -eq 0 ];then
target="."
elif [ "$1" = "-h" ] || [ "$1" = "–help" ];then
usage
exit 0
else
target="$1"
fi
echo -e "${GREEN}==========开始扫描路径:${target} ==========${NC}"
echo ""
# grep参数解释:
# -r 递归遍历 -n 显示行号 -I 忽略二进制文件 -o 只输出匹配内容
# -E 正则扩展,正则:flag\\{[^{}]*\\}
grep -rnIoE 'flag\\{[^{}]*\\}' "$target" –color=auto 2>/dev/null
echo ""
echo -e "${GREEN}==========扫描结束 ==========${NC}"
二、使用步骤
vim find_flag.sh
粘贴上面全部代码,保存退出。
chmod +x find_flag.sh
# 1. 扫描当前全部目录
./find_flag.sh
# 2. 扫描指定单个文件
./find_flag.sh /tmp/test.txt
# 3. 递归扫描指定文件夹
./find_flag.sh /home/user/ctf
# 4. 查看帮助
./find_flag.sh -h
三、精简单行命令(无需脚本,临时快速查找)
grep -rnIoE 'flag\\{[^{}]*\\}' . –color=auto 2>/dev/null
四、补充拓展脚本(进阶:保存结果到日志)
#!/bin/bash
RED='\\033[0;31m'
GREEN='\\033[0;32m'
NC='\\033[0m'
logfile="flag_search.log"
> $logfile
target=${1:-.}
echo -e "${GREEN}开始扫描,结果同时输出屏幕与 $logfile${NC}"
grep -rnIoE 'flag\\{[^{}]*\\}' "$target" 2>/dev/null | tee $logfile
echo -e "${GREEN}查找完成,日志已保存至 $logfile${NC}"
关键正则说明
flag\\{[^{}]*\\}
- flag\\{:固定开头flag{
- [^{}]*:匹配{}内部所有非大括号字符,防止跨括号误匹配
- \\}:闭合右大括号
网硕互联帮助中心




评论前必须登录!
注册