有没有一种方法可以向使用的 scanf 发出非 ascii 十六进制字符%s
?我正在尝试插入十六进制字符等\x08\xDE\xAD
(以演示缓冲区溢出)。
输入不是命令行参数,而是程序内部的 scanf。
有没有一种方法可以向使用的 scanf 发出非 ascii 十六进制字符%s
?我正在尝试插入十六进制字符等\x08\xDE\xAD
(以演示缓冲区溢出)。
输入不是命令行参数,而是程序内部的 scanf。
我假设您想在标准输入上提供任意数据(因为您使用 阅读scanf
)。
您可以使用外壳创建数据并将其通过管道传输到您的程序中,例如
printf '\x08\xDE\xAD' | yourprogram
scanf
请注意,这仅在没有要输入的空白字符时才有效(因为%s
格式在空白处停止)。
当你说'to a scanf()
'时,大概还有其他数据要提供。让一个程序(可能是 Perl 或 Python 脚本)生成数据并将非 ASCII 字符写入程序的标准输入是否可行?如果您需要标准输入看起来像一个终端,那么您应该调查expect
哪个可以为您处理。这是处理问题的常用方法。