Python将不会打印NOP

问题描述 投票:0回答:1

我正在尝试开发shellcode来进行二进制利用。我需要打印到文件的指令之一是NOP(0x90)。无论出于什么原因,每当我尝试打印此字符时,我的Python环境(在Ubuntu 20.04上运行)都会挂起。换句话说,除非我在环境之外按Ctrl-D并再次使用python命令,否则我将无法运行任何其他Python代码行。其他不可打印的字符不会发生这种情况。为了说明你的意思,这里是一个例子:

$ python3
Python 3.8.2 (default, Apr 27 2020, 15:53:34) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('\x55')
U
>>> print('\x80') # Python doesn't hang with other weird characters

>>> print('\x91')

>>> print('\x89')

>>> print('\x90') # Python does not respond after this line

此外,如果我尝试在外壳中使用此命令,则会得到不同的结果。它无需悬挂即可工作,但是0xc2和0x90一起打印出来。

$ python3 -c "print('\x90')" > test
$ xxd test 
00000000: c290 0a                                  ...

没有任何方法可以将0x90字符输出到文件而无需Python挂起或添加0xc2字符?

python-3.x reverse-engineering
1个回答
0
投票

以二进制模式打开文件,并使用write而不是print

将'b放在'\ x90'前面,使其成为字节字符串。

© www.soinside.com 2019 - 2024. All rights reserved.