我知道您可以告诉C使用printf(“\ xab”)将值解释为十六进制。如果输入“\ xab”作为输入的C程序,它会将其解释为字符-x-a-b。有没有办法将printf样式的格式信息嵌入到原始输入中?
答案 0 :(得分:1)
不,这完全取决于读取字符的代码如何解释它们。你不能通过给出文本来神奇地强迫程序从外部做其他事情。我想缓冲区溢出攻击有点像反例,但这是相当极端的。
许多程序使用例如strtol()
自动支持0x
(十六进制)和0
作为前缀(浏览器地址栏是此意外功能的一个常见示例)。例如,在Windows中,您可以执行此操作来ping此站点:
C:\>ping 0xc6fcce10
Pinging 198.252.206.16 with 32 bytes of data:
其中0xc6fcce10是作为单个32位十六进制数的IP地址。