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

6.2 Linux文本处理进阶(第16天)

核心目标
  1. 掌握AWK编程:深入理解AWK的工作模式(模式-动作),能够使用AWK对结构化文本数据进行过滤、计算、格式化输出。

  2. 掌握SED流编辑:熟练使用SED进行文本替换、删除、插入、转换等操作,实现批量文本处理。

  3. 应用实战:能够将AWK和SED灵活应用于渗透测试中的日志分析、扫描结果处理、数据提取与格式化。

模块一:AWK编程深入
1.1 AWK基本概念
  • 工作模式awk 'pattern {action}' file

    • pattern:模式,用于匹配行。可省略,表示所有行。

    • {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 'NR==1, NR==5 {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' file

    • command:编辑命令,如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
  • 提取登录失败日志的IP

    复制代码
    grep "Failed password" auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
3.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基础操作
  1. 字段提取 :使用/etc/passwd文件,编写AWK命令,只输出用户名(第1列)和使用的Shell(第7列),格式为username -> shell

  2. 条件过滤 :给定一个日志文件sample.log,包含[INFO][WARN][ERROR]级别的日志。编写AWK命令,只输出[ERROR]级别的日志行。

  3. 数据统计 :给定一个文本文件data.txt,每行一个数字。编写AWK命令,计算这些数字的总和、平均值、最大值和最小值。

4.2 SED基础操作
  1. 批量替换:创建一个包含多行文本的文件,将其中所有的"cat"替换为"dog",并将"red"替换为"blue"。

  2. 删除操作 :在一个配置文件中,删除所有空行和以#开头的注释行。

  3. 插入内容 :在一个脚本文件的开头插入一行#!/bin/bash

4.3 综合实战
  1. 分析SSH登录日志 :使用提供的auth.log样本,完成以下任务:

    • 提取所有"Failed password"事件的日期、时间和源IP地址。

    • 统计每个源IP的失败尝试次数,并按次数降序排列。

    • 找出所有"Accepted password"事件的用户名和源IP。

  2. 处理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模块的四种攻击模式,实现高效的暴力破解、模糊测试和参数枚举。

相关推荐
X7x52 小时前
安全信息和事件管理(SIEM):企业安全运营的技术基石
网络安全·网络攻击模型·安全威胁分析·安全架构·siem
宋浮檀s2 小时前
应急响应——Web漏洞:命令执行+SSRF+弱口令
运维·数据库·sql·网络安全·oracle·应急响应
日取其半万世不竭2 小时前
iftop、nethogs 和 nload:Linux 服务器网络流量实时监控工具介绍
linux·运维·服务器
mounter6252 小时前
Linux 内核资源管理:控制组(cgroup)的演进与“策略组”新提案
linux·运维·服务器·cgroup·kernel
bksczm2 小时前
文件在磁盘中的存储方式
linux·运维·服务器
L1624762 小时前
OpenSSH 半自动升级方案(独立编译 + 手动迁移 + 重建 systemd 服务)
linux·服务器·ssh
半旧夜夏2 小时前
【保姆级】微服务组件环境搭建(Docker Compose版)
java·linux·spring cloud·微服务·云原生·容器
Wpa.wk3 小时前
win环境本地文件上传远程服务器(scp/远程连接工具)
运维·服务器
Soari3 小时前
SSH 主机密钥冲突
运维·网络·ssh
爱莉希雅&&&3 小时前
zabbix快速搭建和使用
android·linux·数据库·zabbix·监控