温馨提示×

怎么用linux strings查漏洞

小樊
48
2026-10-17 04:04:20
栏目: 网络安全

在 Linux 下用 strings 查漏洞,通常不是“直接发现漏洞”,而是通过提取二进制文件中的可读字符串,辅助分析程序行为、定位敏感信息、发现潜在安全问题。下面从用途 → 基本用法 → 实战思路 → 示例 → 局限讲清楚。


一、strings 能帮你查什么(漏洞相关)

strings 常用于:

  1. 硬编码敏感信息
    • 密码、token、API key
    • 内部路径、调试接口
  2. 危险函数 / 接口痕迹
    • system()、exec、/bin/sh
    • SQL 语句拼接
  3. 版本与组件信息
    • 第三方库版本(可能已知 CVE)
  4. 调试/后门信息
    • debug、admin、backdoor
  5. 协议 / 格式特征
    • 自定义协议、URL、端口

二、基本用法(必会)

strings binary_file

常用参数:

strings -n 6 file        # 只显示长度≥6的字符串
strings -a file          # 扫描整个文件(包括数据段)
strings -e l file        # 指定编码(l=16位小端)

输出到文件:

strings app > strings.txt

三、结合漏洞分析的实战思路

1️⃣ 找硬编码凭证(最常见)

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

示例发现:

password=admin123
api_key=AKIA123456789

➡ 直接安全风险


2️⃣ 找危险函数调用

strings app | grep -iE "system|exec|/bin/sh|popen"

如果看到:

/bin/sh
system("/tmp/run.sh")

➡ 命令注入风险点


3️⃣ 找 SQL / 命令拼接

strings app | grep -iE "select|update|delete|insert"

例如:

SELECT * FROM user WHERE name='%s'

➡ SQL 注入嫌疑


4️⃣ 找版本 / 组件(CVE)

strings app | grep -iE "version|openssl|libpng|curl"

如果看到:

OpenSSL 1.0.1

➡ 可能存在 Heartbleed(CVE-2014-0160)


5️⃣ 配合 grep + 正则更高效

strings app | grep -E "https?://|ftp://"
strings app | grep -E "/etc/|/var/|/home/"

四、CTF / 逆向中的典型用法

strings crackme | less

常见发现:

  • 提示信息:Wrong password
  • 正确密码字符串
  • 加密算法名(AES、RC4)

五、strings 的局限(很重要)

❌ 不能:

  • 分析逻辑
  • 发现内存漏洞(栈溢出、UAF)
  • 解密混淆字符串

✅ 通常配合:

  • objdump
  • gdb
  • radare2 / ghidra
  • checksec

六、一句话总结

strings 是漏洞分析的“第一眼工具”:
快速看程序“说了什么”,再决定下一步用反汇编还是动态调试。

如果你有具体场景(CTF / 二进制 / 固件 / 服务程序),我可以给你更针对性的 strings 使用套路。

0 踩