输入非ASCII字符到scanf(“%s”)

有没有办法可以向使用%s的scanf发出非asciihex字符? 我正在尝试插入hex字符,如\x08\xDE\xAD等等(以演示缓冲区溢出)。

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

我假设你想在stdin上提供任意数据(因为你用scanf读取)。

您可以使用shell创建数据并将其传输到程序中,例如

 printf '\x08\xDE\xAD' | yourprogram 

请注意,只有在没有空白字符输入时才会起作用(因为%s格式的scanf在空白处停止)。

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