1

我知道您可以告诉 C 使用 printf("\xab") 将值解释为十六进制。如果您在 C 程序中输入“\xab”作为输入,它会将其解释为字符 -xab。有没有办法将 printf 样式的格式信息嵌入到原始输入中?

4

1 回答 1

1

不,这完全取决于读取字符的代码如何解释它们。您不能通过给它文本来神奇地强制程序从外部执行其他操作。我想缓冲区溢出攻击是一个反例,但这是相当极端的。

许多程序使用例如strtol()自动支持0x(十六进制)和0作为前缀(浏览器地址栏是这种相当出乎意料的功能的一个常见示例)。例如,在 Windows 中,您可以执行以下操作来 ping 此站点:

C:\>ping 0xc6fcce10

Pinging 198.252.206.16 with 32 bytes of data:

其中 0xc6fcce10 是单个 32 位十六进制数的 IP 地址。

于 2013-03-07T15:21:01.713 回答