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