如何将\ x00作为参数传递给程序?

Hri*_*ali 5 shell command-line shellcode

我有一个小程序,希望将shellcode作为参数传递。在shellcode中,必须传递\ x00。我尝试了以下命令:

./program `python -c 'print "\x01\x00\x00\x00\x9c\xd8\xff\xbf"'`
Run Code Online (Sandbox Code Playgroud)

但是\ x00根本没有注册!传递给程序的参数是“ \ x01 \ x9c \ xff \ xbf”。

我不认为这是python的问题,而是传递参数的shell。我正在使用bash外壳。

现在,如何强制外壳程序传递参数'\ x00'?

谢谢,问候,
希里希什·穆拉利

Chr*_*zig 2

一点也不。Unix 使用 C 样式字符串作为调用命令的参数,并且它们是以 NUL 结尾的字符序列。

您可以做的是重写您的程序(或找到调用变体)以接受其标准输入中的参数。NUL 字节在那里工作得很好,而且事实上被广泛使用,通常用作文件名的分隔符,因为它们几乎是文件名中唯一不能包含的内容。请参阅find's -print0switch 和xarg's switch-0以获得可以说是最流行的示例。