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

相关推荐
zjeweler2 小时前
“网安+护网”终极300多问题面试笔记-1共3-内网&域相关
笔记·web安全·网络安全·面试·职场和发展·护网面试
Lugas Luo2 小时前
车载录像存储性能模拟测试工具设计
linux·嵌入式硬件·测试工具
介一安全2 小时前
【Web安全】PHP内置Web服务器SSRF漏洞:从原理到实战利用全解析
web安全·网络安全·php·安全性测试
铅笔小新z2 小时前
【Linux】进程控制(下)
linux·运维·chrome
企鹅的蚂蚁2 小时前
Ubuntu 22.04 终端进阶:Terminator 安装与快捷键完全手册
linux·运维·ubuntu
不会写程序的未来程序员2 小时前
nvm 安装教程:Node.js 版本管理全攻略 (Win/Mac/Linux) + .nvmrc 实战
linux·macos·node.js·前端开发·环境配置·nvm
黄焖鸡能干四碗2 小时前
网络安全风险评估报告(WORD版本)
大数据·运维·网络·人工智能·制造
跨境麦香鱼2 小时前
2026自动化抢鞋机器人:如何通过高并发代理提高成功率?
运维·网络·自动化
路由侠内网穿透2 小时前
本地部署开源发票管理系统 Invoice Ninja 并实现外部访问
运维·服务器·数据库·物联网·开源