温馨提示×

ubuntu strings输出如何分析

小樊
46
2026-10-26 22:57:14
栏目: 智能运维

在 Ubuntu(或其他 Linux 系统)中,strings 命令用于从一个二进制文件(可执行文件、库、core dump、固件等)中提取可打印的字符串。分析 strings 输出通常是逆向分析、排查问题或安全审计的第一步。

下面从基本用法 → 输出内容 → 分析方法 → 实战示例逐步说明。


一、strings 基本用法

strings 文件名

常见选项:

strings -n 6 文件        # 只显示长度 ≥6 的字符串
strings -a 文件          # 扫描整个文件(包括非文本段)
strings -e l 文件        # 指定字符编码(l=16位小端)
strings -t x 文件        # 显示字符串偏移(十六进制)
strings -f 文件          # 显示文件名

示例:

strings -n 6 -t x ./app

二、strings 输出里通常有什么?

strings 输出一般包括:

  1. 编译信息

    • GCC 版本
    • 编译路径
    • 源代码文件名
  2. 函数名 / 符号

    • 未 strip 的二进制会暴露大量信息
  3. 错误提示 / 日志

    • "File not found"
    • "Connection failed"
  4. URL / IP / 端口

    • http://api.example.com
    • 127.0.0.1:8080
  5. 密钥 / 密码(如果硬编码)

    • password=123456
  6. 协议 / 格式标识

    • GET / HTTP/1.1
    • SQLite format 3

三、如何“分析” strings 输出

1️⃣ 先判断二进制是否 strip

file 程序
  • 有 not stripped → 信息丰富
  • stripped → 只有少量字符串

2️⃣ 过滤关键信息(最重要)

查找 URL / IP

strings app | grep -E "http|://|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

查找密码 / 密钥

strings app | grep -iE "password|secret|token|key"

查找路径

strings app | grep "/"

查找版本 / 编译信息

strings app | grep -i "gcc\|ubuntu\|version"

3️⃣ 结合偏移定位(逆向用)

strings -t x app

输出示例:

  1a2f  main
  1a34  /etc/passwd

然后用:

objdump -s -j .rodata app

或 IDA / Ghidra 定位该地址。


4️⃣ 判断是否硬编码敏感信息

⚠️ 安全角度:

  • 密码写在 strings 里 = 严重问题
  • API Key 明文 = 泄露风险

示例:

strings app | grep -i "sk-"

5️⃣ 辅助判断程序功能

例如看到:

sqlite3_exec
SELECT * FROM users

→ 程序使用 SQLite,且操作 users 表

看到:

system
/bin/sh

→ 可能执行 shell 命令(漏洞风险)


四、实战示例

示例 1:分析未知程序

strings unknown_bin | less

你可能会看到:

Usage: scan -i eth0
Starting sniffer...
pcap_open_live

→ 这是一个网络抓包工具


示例 2:CTF / 逆向题

strings crackme | grep -i flag

输出:

Enter password:
Correct! Flag is: CTF{...}

→ 直接拿到 flag 逻辑


五、strings 的局限性(很重要)

❌ 不能:

  • 还原逻辑
  • 显示加密字符串
  • 显示动态生成内容

✅ 通常配合:

  • objdump
  • gdb
  • ltrace / strace
  • IDA / Ghidra

六、一句话总结

strings 是“看二进制在‘说’什么”,不是“看它在‘做’什么”

如果你愿意,可以:

  • 发一个 strings 输出片段
  • 或说明你是安全分析 / 逆向 / 排错 / CTF

我可以帮你具体解读。

0 踩