コンピュータハイジャッキングという本でシェルコードについて勉強しているのですが、注入するプログラムの意味がわかりません。
例えば次のコード
#include <stdio.h> #include <string.h> char *shellcode = "\x48\x31\xd2\x52\x48\xb8\x2f\x62\x69\x6e\x2f\x2f\x73\x68" "\x50\x48\x89\xe7\x52\x57\x48\x89\xe6\x48\x8d\x42\x3b\x0f\x05"; int main(void) { fprintf(stdout,"Length: %d\n",strlen(shellcode)); (*(void(*)()) shellcode)(); return 0; }
変数 *shellcode を使って標的ホストでシェルを起動させるコードなのですが、実行はできたのですが、shellcodeに格納している16進数の意味がわかりません。
試しに"\x48\x31\xd2\x52\x48\xb8\x2f\x62\x69\x6e\x2f\x2f\x73\x68"を翻訳させてみると
H1ÒRH¸/bin//sh
と出てきました。/bin//shは分かるのですが、左の5文字の意味は何なのでしょうか?
他のコードでも翻訳すると意味がわからない文字列ばかりで、何をやっているのかわかりません。
これは適当な数字や文字を入れてるだけなのでしょうか?
回答2件
あなたの回答
tips
プレビュー