7

有没有一种方法可以向使用的 scanf 发出非 ascii 十六进制字符%s?我正在尝试插入十六进制字符等\x08\xDE\xAD(以演示缓冲区溢出)。

输入不是命令行参数,而是程序内部的 scanf。

4

2 回答 2

2

我假设您想在标准输入上提供任意数据(因为您使用 阅读scanf)。

您可以使用外壳创建数据并将其通过管道传输到您的程序中,例如

printf '\x08\xDE\xAD' | yourprogram

scanf请注意,这仅在没有要输入的空白​​字符时才有效(因为%s格式在空白处停止)。

于 2015-10-21T08:20:06.597 回答
1

当你说'to a scanf()'时,大概还有其他数据要提供。让一个程序(可能是 Perl 或 Python 脚本)生成数据并将非 ASCII 字符写入程序的标准输入是否可行?如果您需要标准输入看起来像一个终端,那么您应该调查expect哪个可以为您处理。这是处理问题的常用方法。

于 2013-02-28T01:40:32.193 回答