在 Linux 下用 strings 查漏洞,通常不是“直接发现漏洞”,而是通过提取二进制文件中的可读字符串,辅助分析程序行为、定位敏感信息、发现潜在安全问题。下面从用途 → 基本用法 → 实战思路 → 示例 → 局限讲清楚。
strings 能帮你查什么(漏洞相关)strings 常用于:
system()、exec、/bin/shdebug、admin、backdoorstrings binary_file
常用参数:
strings -n 6 file # 只显示长度≥6的字符串
strings -a file # 扫描整个文件(包括数据段)
strings -e l file # 指定编码(l=16位小端)
输出到文件:
strings app > strings.txt
strings app | grep -iE "password|passwd|token|secret|key"
示例发现:
password=admin123
api_key=AKIA123456789
➡ 直接安全风险
strings app | grep -iE "system|exec|/bin/sh|popen"
如果看到:
/bin/sh
system("/tmp/run.sh")
➡ 命令注入风险点
strings app | grep -iE "select|update|delete|insert"
例如:
SELECT * FROM user WHERE name='%s'
➡ SQL 注入嫌疑
strings app | grep -iE "version|openssl|libpng|curl"
如果看到:
OpenSSL 1.0.1
➡ 可能存在 Heartbleed(CVE-2014-0160)
grep + 正则更高效strings app | grep -E "https?://|ftp://"
strings app | grep -E "/etc/|/var/|/home/"
strings crackme | less
常见发现:
Wrong passwordstrings 的局限(很重要)❌ 不能:
✅ 通常配合:
objdumpgdbradare2 / ghidrachecksec
strings是漏洞分析的“第一眼工具”:
快速看程序“说了什么”,再决定下一步用反汇编还是动态调试。
如果你有具体场景(CTF / 二进制 / 固件 / 服务程序),我可以给你更针对性的 strings 使用套路。