繁体   English   中英

在C程序用户输入中输入字节串

[英]Entering Strings of Bytes into C Program User Input

我正在研究一个涉及在C程序上执行缓冲区溢出的问题。 程序要求用户输入命令行,我需要使用此输入输入我的字节字符串,包括nops,shellcode,ret地址等。问题是c程序将我输入的所有内容解释为文字字符串,因此,如果我输入类似“\\ xff \\ xab \\ x12 ...”的内容,程序会将每个单独的字符解释为不同的字节。 我可以通过为每个字节创建相应ASCII字符的字符串来输入单独的字节,但这限制了我的字节值的十六进制值00-7F。 我想知道是否有某种方法可以使用python输入字节字符串,或者可能格式化用户输入,以便C程序以我需要的方式解释它。 请注意,在我开始运行程序之前,我不知道字节串的返回地址是什么,因此在运行C程序之前我无法生成字节字符串我在Linux x86 shell上工作,我没有C程序的源代码。

我试过调用python使用命令来输入我需要的字符串,比如

$(python -c 'print "\x41" * 205 + "\x34\x86")

但C程序只是从字面上解释所有这些字符。 我也尝试使用扩展的ASCII字符,但C程序似乎没有正确解释它们,将它们全部与未知字符符号和0xc3十六进制值相关联。 是否有可能C程序可能正在使用其他字符/十六进制映射?

如果有人知道我可以按照我需要的方式输入输入,那么你的帮助将非常感激。

谢谢

你在shell调用python缺少一个分号( ' )。 另外:

如果您的可执行文件以CLI参数的形式获取其输入:

$ ./yourprog $(python -c 'print "\\x41" * 205 + "\\x34\\x86"')


如果它以STDIN的形式输入:

$ python -c 'print "\\x41" * 205 + "\\x34\\x86"' | ./yourprog


"./yourprog"替换为可执行文件的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM