自学渗透测试第16天(Linux文本处理进阶)

张开发
2026/4/16 21:26:19 15 分钟阅读

分享文章

自学渗透测试第16天(Linux文本处理进阶)
6.2 Linux文本处理进阶第16天核心目标掌握AWK编程深入理解AWK的工作模式模式-动作能够使用AWK对结构化文本数据进行过滤、计算、格式化输出。掌握SED流编辑熟练使用SED进行文本替换、删除、插入、转换等操作实现批量文本处理。应用实战能够将AWK和SED灵活应用于渗透测试中的日志分析、扫描结果处理、数据提取与格式化。模块一AWK编程深入1.1 AWK基本概念工作模式awk pattern {action} filepattern模式用于匹配行。可省略表示所有行。{action}动作对匹配到的行执行的操作。可省略默认为{print $0}。内建变量$0整行内容。$1, $2, ...第1、2...个字段默认以空格/制表符分隔。NF当前行的字段数。NR当前处理的行号。FS输入字段分隔符默认空格。OFS输出字段分隔符默认空格。基本结构BEGIN { ... } # 在处理任何行之前执行一次 pattern { ... } # 对匹配pattern的每行执行 END { ... } # 在处理完所有行之后执行一次1.2 AWK实战示例基础打印awk {print $1} file.txt # 打印每行第一个字段 awk {print $NF} file.txt # 打印每行最后一个字段 awk NR1, NR5 {print $0} file.txt # 打印第1到5行条件过滤awk $3 100 file.txt # 打印第三列大于100的行 awk /error/ {print $0} log.txt # 打印包含error的行 awk $1 ~ /^192\.168/ {print $0} # 打印第一列以192.168开头的行字段计算与统计awk {sum $1} END {print sum} numbers.txt # 对第一列求和 awk {count[$1]} END {for (ip in count) print ip, count[ip]} access.log # 统计IP出现次数字段分隔符控制awk -F: {print $1} /etc/passwd # 以冒号分隔打印用户名 awk -F[ :] {print $1, $2} file # 以空格或冒号分隔模块二SED流编辑器深入2.1 SED基本概念工作模式sed [options] command filecommand编辑命令如s替换d删除p打印等。常用选项-n静默模式只显示处理后的行。-i直接修改文件谨慎。-e执行多个命令。2.2 SED实战示例替换操作sed s/old/new/g file.txt # 将每行所有old替换为new sed s/old/new/2 file.txt # 将每行第2个old替换为new sed s/^/HEAD: / file.txt # 在每行开头添加HEAD: sed s/$/ TAIL/ file.txt # 在每行结尾添加TAIL sed -n s/.*error.*//p log.txt # 打印包含error的行删除操作sed 5d file.txt # 删除第5行 sed 2,5d file.txt # 删除第2到5行 sed /^#/d config.txt # 删除以#开头的行注释插入与追加sed 2i\Inserted Line file.txt # 在第2行前插入一行 sed 2a\Appended Line file.txt # 在第2行后追加一行复杂编辑# 将文件中的foo替换为bar并将hello替换为world sed -e s/foo/bar/g -e s/hello/world/g file.txt # 删除从包含START的行到包含END的行 sed /START/,/END/d file.txt模块三AWK与SED在渗透测试中的实战应用3.1 日志分析提取Nmap扫描的开放端口grep open nmap_scan.txt | awk {print $1} | cut -d/ -f1 | sort -u分析Apache访问日志统计状态码awk {print $9} access.log | sort | uniq -c | sort -nr提取登录失败日志的IPgrep Failed password auth.log | awk {print $11} | sort | uniq -c | sort -nr3.2 结果格式化美化Nmap的Grepable输出grep 80/open scan.gnmap | awk -F[ ;] {print $2}从whois结果中提取组织名称whois example.com | awk -F: /^Organization:/ {print $2}3.3 数据清洗与转换清理扫描结果中的无关行sed /^#/d;/^$/d scan_result.txt cleaned.txt将IP列表转换为特定格式# 192.168.1.1 - http://192.168.1.1 sed s/^/http:\/\// ips.txt模块四当日达标实战任务4.1 AWK基础操作字段提取使用/etc/passwd文件编写AWK命令只输出用户名第1列和使用的Shell第7列格式为username - shell。条件过滤给定一个日志文件sample.log包含[INFO]、[WARN]、[ERROR]级别的日志。编写AWK命令只输出[ERROR]级别的日志行。数据统计给定一个文本文件data.txt每行一个数字。编写AWK命令计算这些数字的总和、平均值、最大值和最小值。4.2 SED基础操作批量替换创建一个包含多行文本的文件将其中所有的“cat”替换为“dog”并将“red”替换为“blue”。删除操作在一个配置文件中删除所有空行和以#开头的注释行。插入内容在一个脚本文件的开头插入一行#!/bin/bash。4.3 综合实战分析SSH登录日志使用提供的auth.log样本完成以下任务提取所有“Failed password”事件的日期、时间和源IP地址。统计每个源IP的失败尝试次数并按次数降序排列。找出所有“Accepted password”事件的用户名和源IP。处理Nmap扫描结果给定一个nmap -oG格式的输出文件编写命令序列提取所有开放了80或443端口的主机IP。将IP列表格式化为https://IP的形式并保存到新文件。模块五常见问题与解决方案5.1 AWK常见错误字段引用错误$0是整行$1是第一个字段。注意分隔符FS的设置。字符串与数字比较100是字符串100是数字。比较时注意类型或使用转换为数字。模式匹配范围awk /start/,/end/匹配从包含start的行到包含end的行。注意如果有多组会匹配多次。5.2 SED常见错误原地修改风险-i选项会直接修改原文件务必先备份或测试。特殊字符转义在替换命令s中/是分隔符如果模式中包含/需转义为\/或使用其他分隔符如|。贪婪匹配sed默认是贪婪匹配。例如s/.*//会匹配到行尾。明日预告第17天将深入HTTP状态码的含义并系统学习Burp Suite Intruder模块的四种攻击模式实现高效的暴力破解、模糊测试和参数枚举。

更多文章