c - 格式化字符串攻击,%_$d 和 %d 的区别

标签 c security printf format-string

我目前正在研究二进制开发,到目前为止还不错。

例如,我唯一不太明白的是 %4$d 和 %4d 之间的区别。我在看这个指南:

http://www.kroosec.com/2012/12/protostar-format2.html

最后一行在使用 %60d 时提到了“最小字段宽度”。这与我的问题有关吗?什么时候应该使用 %$d,什么时候使用 %d?

最佳答案

格式字符串中的美元符号表示 printf 中使用的变量的位置。这样,例如,您可能只有 1 个函数参数,但在格式字符串中使用它 10 次,或者以不同的顺序使用更多参数。根据编程语言的不同,您可能会也可能不会使用混合 $ 格式。

关于c - 格式化字符串攻击,%_$d 和 %d 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54244465/

相关文章:

c - OpenMP:单一的共享变量,等待构造

CS50 Pset2-凯撒密码

c - 程序运行不佳(意味着输出(printf))但在 gdb t.exe 中运行良好

c - 仅基于 printf 语句的程序段错误

c - 为什么在printf中指定为整数的char被正确打印

c - 使用 STM32 Arm 进行嵌入式系统编程的 STM32F103RB 和 STM32F4

c - 通过函数操作变长二维数组

java - 在 Windows 中更改 Java 安全文件

security - scrypt 相对于 bcrypt 有什么优势?

c - 有没有办法修改专有内核模块中的 Linux 系统调用表?