在 Debian 系系统(以及一般 Linux)里,strings 本身并不是“漏洞扫描器”,而是一个很基础的工具:
从二进制文件(可执行文件、库、固件等)中提取可打印字符串。
但它在漏洞分析、逆向、CTF、恶意软件分析、二进制审计中非常常用。下面按“实际怎么用”来讲。
strings 适合发现:
硬编码敏感信息
危险函数 / 不安全调用痕迹
system(exec(sprintfstrcpygets(典型漏洞)popen调试 / 后门痕迹
debugbackdoorshell/bin/sh第三方组件版本(已知漏洞)
格式字符串 / 路径线索
%s %x %n/etc/passwd/proc/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 -a binary > strings.txt
grep -Ei "system|exec|popen|/bin/sh|password|token" strings.txt
或:
strings binary | grep -i "password"
strings binary | grep -E "strcpy|gets|sprintf|scanf"
⚠️ 注意:
strings 只能看到符号名或字符串常量,不能证明漏洞一定存在,只是线索。
strings -t x binary | grep "/bin/sh"
输出类似:
0x1a3f "/bin/sh"
然后用 gdb / objdump / radare2 分析该地址。
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
❌ 不能:
✅ 适合作为:
objdump / gdb / radare2 / ghidrafile binary
checksec --file=binary
strings -a binary | less
objdump -d binary | less
或:
rabin2 -z binary
strings不是找漏洞的工具,而是“发现线索”的工具
真正判断是否漏洞,需要结合逆向和动态分析。
如果你愿意,可以:
你想用在哪方面?