温馨提示×

如何用debian strings找漏洞

小樊
47
2026-10-04 03:05:16
栏目: 网络安全

在 Debian 系系统(以及一般 Linux)里,strings 本身并不是“漏洞扫描器”,而是一个很基础的工具:

从二进制文件(可执行文件、库、固件等)中提取可打印字符串。

但它在漏洞分析、逆向、CTF、恶意软件分析、二进制审计中非常常用。下面按“实际怎么用”来讲。


一、strings 能帮你找什么类型的“漏洞线索”

strings 适合发现:

  1. 硬编码敏感信息

    • 密码、Token、API Key
    • 内部 IP、域名
    • 调试接口地址
  2. 危险函数 / 不安全调用痕迹

    • system(
    • exec(
    • sprintf
    • strcpy
    • gets(典型漏洞)
    • popen
  3. 调试 / 后门痕迹

    • debug
    • backdoor
    • shell
    • /bin/sh
  4. 第三方组件版本(已知漏洞)

    • OpenSSL
    • zlib
    • libpng
    • 特定协议实现
  5. 格式字符串 / 路径线索

    • %s %x %n
    • /etc/passwd
    • /proc/

二、基本用法(Debian 上)

strings /path/to/binary

只看可打印字符(默认):

strings binary

常见实用参数

strings -n 6 binary        # 只显示长度 ≥6 的字符串
strings -a binary          # 扫描整个文件(不只 data 段)
strings -e l binary        # 16-bit little endian(Unicode)
strings -t x binary        # 显示字符串偏移(十六进制)

三、用 strings “找漏洞”的实战流程

1️⃣ 提取所有字符串

strings -a binary > strings.txt

2️⃣ 搜索危险关键字

grep -Ei "system|exec|popen|/bin/sh|password|token" strings.txt

或:

strings binary | grep -i "password"

3️⃣ 找不安全函数

strings binary | grep -E "strcpy|gets|sprintf|scanf"

⚠️ 注意:
strings 只能看到符号名或字符串常量,不能证明漏洞一定存在,只是线索。


4️⃣ 定位偏移(配合逆向)

strings -t x binary | grep "/bin/sh"

输出类似:

 0x1a3f "/bin/sh"

然后用 gdb / objdump / radare2 分析该地址。


5️⃣ 查第三方库版本(已知 CVE)

strings binary | grep -i "openssl"

例如:

OpenSSL 1.0.1f

→ 可对应 Heartbleed(CVE-2014-0160)


四、实际例子

示例:发现后门字符串

strings ./app | grep -i "backdoor"

输出:

backdoor activated
/bin/sh -c

→ 高度可疑,继续用 objdump -d 或 gdb 分析。


示例:发现硬编码密码

strings ./login | grep -i "pass"

输出:

admin:123456

五、strings 的局限(很重要)

❌ 不能:

  • 证明漏洞可利用
  • 看到运行时行为
  • 分析加密字符串
  • 替代反汇编

✅ 适合作为:

  • 初步侦察
  • 快速审计
  • 配合 objdump / gdb / radare2 / ghidra

六、进阶组合技(Debian 常用)

file binary
checksec --file=binary
strings -a binary | less
objdump -d binary | less

或:

rabin2 -z binary

七、总结一句话

strings 不是找漏洞的工具,而是“发现线索”的工具
真正判断是否漏洞,需要结合逆向和动态分析。

如果你愿意,可以:

  • 给我一个 具体二进制
  • 或说你是 CTF / 安全审计 / 恶意软件分析
  • 我可以给你 针对场景的 strings 命令组合

你想用在哪方面?

0 踩