【发布时间】:2013-10-08 12:35:57
【问题描述】:
我以为我可以在 google 上找到这个,但找不到。我正在尝试使用溢出来利用用 C 编写的二进制文件。在 gdb 中,我已经让溢出降落在正确的字节上以重定向函数返回,但似乎无法在那里获得正确的值以降落在我的代码上。
当您运行程序时,它会要求标准输入提供两个输入,我需要能够为其中一些输入提供十六进制值。像\x## 这样的转义在提示符下不起作用。我想我可以用 python 子进程库做点什么。
到目前为止,导入子流程并在提示符处使用 p=subprocess.Popen("bin", stdin=subprocess.PIPE) 和 p.stdin.write("sometext" + "\xhh\xhh\xhh\xhh") 并没有像我希望的那样工作。
有什么建议吗?
谢谢!
【问题讨论】:
-
print写入sys.stdout并且是一个语句,你不能在表达式中使用它。直接写字符串不用打印即可。 -
是的,更明确地将您的代码更改为:
p.stdin.write("sometext" + "\xhh\xhh\xhh\xhh") -
啊。我写错了那个代码。我正在写
p.stdin.write("text" + "\xhh")。那么,它应该这样工作吗?我明天再调查。感谢您的帮助。 -
为什么不只是
"sometext\xhh\xhh\xhh\xhh"? -
我要拆分成两个字符串,因为我使用的是像 'a'*1000 + '\x76\xff\xff\xbf' 这样的乘数
标签: python buffer-overflow exploit