如何借助awk/sed/cat实现tplmap批量处理文本文件中的多个URL
Tplmap 批量URL检测实现方案
提前将所有待检测的URL按行存入纯文本文件(例如命名为urls.txt),每行对应一个完整检测目标,格式和单条检测时传入的URL完全一致(需要标记注入点的位置直接保留FUZZ标记即可),不需要修改tplmap本身代码,通过shell文本处理命令即可实现批量检测。
基础实现:Shell 循环读取(最易上手)
通过cat读取文件内容,配合循环逐行传入目标URL给tplmap执行,命令如下:
#!/bin/bash # 定义结果日志文件 log_file="tplmap_batch_scan.log" > "$log_file" # 清空旧日志 while read -r target; do # 跳过空行 if [[ -z "$target" ]]; then continue fi echo "[*] 开始检测目标: $target" | tee -a "$log_file" python tplmap.py -u "$target" 2>&1 | tee -a "$log_file" echo "====================================" | tee -a "$log_file" # 读取文件内容作为循环输入 done < urls.txt
过滤无效行:配合 sed 预处理URL列表
如果URL列表里存在注释行(#开头的备注)、首尾多余空格、空行等无效内容,可以先用sed做清洗,再传入循环处理,只需要把上面脚本最后一行的输入部分替换为sed处理后的结果即可:
done < <(sed -e '/^#/d' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' -e '/^$/d' urls.txt)
sed处理逻辑说明:
/^#/d:删除所有#开头的注释行s/^[[:space:]]*//:删除每行开头的空白字符(空格、制表符)s/[[:space:]]*$//:删除每行末尾的空白字符/^$/d:删除处理后产生的空行
复杂规则处理:配合 awk 实现自定义校验
如果需要在检测前对URL做格式校验、去重等更复杂的处理,可以直接用awk调度执行检测:
awk ' # 跳过注释行、空行 !/^#/ && length($0) > 0 { # 清除URL首尾空白 gsub(/^[[:space:]]+|[[:space:]]+$/, "", $0) # URL去重,避免重复检测 if (!seen[$0]++) { print "[*] 正在检测: " $0 cmd = "python tplmap.py -u \047" $0 "\047 >> tplmap_awk_scan.log 2>&1" system(cmd) close(cmd) } } ' urls.txt
实用提示
- 如果需要给所有检测请求统一附加Cookie、请求头、代理等参数,直接在
tplmap.py后追加对应参数即可,比如添加Cookie的写法为python tplmap.py -u "$target" -c "user_session=abc123" - 如需并发检测提升效率,可以在tplmap执行命令末尾加
&将任务放入后台,同时注意控制并发数(建议不超过5),避免触发目标站点的WAF拦截,或消耗过多本地资源 - 检测前确认tplmap.py的路径正确,如果不在当前目录,需要写全脚本路径
内容的提问来源于stack exchange,提问作者Muhammad Yaseen
相关产品推荐
相关产品推荐

