对于send和sendline的思考
| 动作类型 | 常用函数 | 是否依赖/产生 \n | 攻击时的注意点 |
|---|---|---|---|
| 输入 (Input) | read(0, buf, n) | 不依赖 | 只要发够 n 个字节就行,不加 \n 也能跑。 |
| 输入 (Input) | gets / scanf |
极度依赖 | 必须加 \n ,否则程序死等,脚本卡死。 |
| 输出 (Output) | printf | 不自动加 | 泄露数据时,后面可能紧跟其他字符串,不好拆分。 |
| 输出 (Output) | puts | 自动加 \n | 泄露数据非常干净,因为 \n 会把数据“推”出来。 |
| 特性 | send(data) | sendline(data) |
|---|---|---|
| 发送内容 | data |
data + \n |
| 精准度 | 高(完全可控) | 低(多送一个字节) |
| 常用配套函数 | read() |
gets(), fgets(), scanf() |
| 危险点 | 程序可能因为没等到回车而卡死 | 多出来的 \n可能会污染下一个输入 |
更新: 2026-04-06 14:49:05
原文: https://www.yuque.com/idcm/wnemg9/gwr8a8a3m8h3xomr