有没有办法将字符串格式化为输入,以便C将其解释为十六进制?

时间:2013-03-07 15:18:13

标签: c

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

1 个答案:

答案 0 :(得分:1)

不,这完全取决于读取字符的代码如何解释它们。你不能通过给出文本来神奇地强迫程序从外部做其他事情。我想缓冲区溢出攻击有点像反例,但这是相当极端的。

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

C:\>ping 0xc6fcce10

Pinging 198.252.206.16 with 32 bytes of data:

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