我试图将字符串发送到服务器上运行的另一个应用程序(我无权访问)。该字符串包含空字符。 现在我注意到,当我在脚本中运行以下代码时,
preferredLayoutAttributesFitting
输出为:abc \ x00 \ x91 \ x11123。
在终端中运行相同代码时的想法:
print('abc\x00\x91\x11\x01123')
我得到的输出是:abc�123
在我的情况下,这是所需的输出。 为什么两个输出都不同? 在脚本中运行打印功能时,如何获得第二个输出?
编辑: 我弄清楚是什么原因造成的。 pwntools导致了这种行为。 但是我仍然不知道为什么。 以下代码:
python -c 'print("abc\x00\x91\x11\x01123")'
结果
abc \ x00 \ x91 \ x11123
当我不导入pwn时,结果是预期的: abc�123。
答案 0 :(得分:0)
实际上没有什么区别。您的问题出在其他地方,但不是终端和脚本之间的解释差异。
这是我在本地为您的示例提供的输出:
[cecile@CC-PC ~]$ python
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('abc\x00\x91\x11\x01123')
abc_123
>>>
[cecile@CC-PC ~]$ python -c 'print("abc\x00\x91\x11\x01123")'
abc_123
在这台机器上,不可打印的字符似乎已被_
代替,但是这里要指出的是,如您所见,解释器和终端中的结果是相同的。
答案 1 :(得分:0)
我希望这可以作为Stack Overflow标准中的答案。
如果您与手榴弹一起玩,对待就像手榴弹,而不是玩具。 PWN tools似乎是一些利用脚本编写的工具。如果您阅读该文档的前几段,则会发现以下内容:
如前所述,我们还希望能够默认获得很多这些副作用。这就是本模块的目的。它执行以下操作:
[...]调用pwnlib.term.init()将您的终端置于原始模式,并实现使它看起来好像不是原始模式的功能。
已警告您,但您尚未进行RTFM。