自学渗透测试第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模块的四种攻击模式,实现高效的暴力破解、模糊测试和参数枚举。

相关推荐
eastyuxiao5 小时前
思维导图拆解项目范围 3 个真实落地案例
大数据·运维·人工智能·流程图
GanGanGanGan_5 小时前
RustDesk 安装指南 — Rocky Linux 9 + XFCE X11
linux·运维·centos
风落无尘5 小时前
《智能重生:从垃圾堆到AI工程师》——第五章 代码与灵魂
服务器·网络·人工智能
其实防守也摸鱼9 小时前
CTF密码学综合教学指南--第九章
开发语言·网络·python·安全·网络安全·密码学·ctf
南境十里·墨染春水10 小时前
linux学习笔记 网络编程——Socket入门与TCP客户端/服务器实现
linux·服务器·网络
Sirens.10 小时前
twikoo:从MongoDB Atlas到本地部署
运维·服务器
Meya112710 小时前
别再人工硬扛机房管理!智能 U 位系统,让机房管理一键数字化
大数据·运维
DFT计算杂谈11 小时前
自动化脚本一键绘制三元化合物相图
java·运维·服务器·开发语言·前端·python·自动化
菩提小狗11 小时前
每日安全情报报告 · 2026-05-02
网络安全·漏洞·cve·安全情报·每日安全
nikolay11 小时前
AI重塑企业信息安全:攻防升级与信任重构
网络·人工智能·网络安全