なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C11の続き2

いよいよ。windowsでexploitを行なう。

本によると実験を行なう際にperlを用いているが、とりあえずできるところまではpythonで書いてみようと思ったので、perlを用いているところは代わりにpythonを使った。

まずは
sc[]= //SHLLCODE;
main()
{
int *ret;
ret = (int *)&ret + 2;
(*ret)=(int)sc;
}

このプログラムでシェルコードを動かす実験を行なった。
このときに使うシェルコードはmetasploitがweb上で公開しているシェルコード作製ツールをweb越しに生成するらしいのだが、指定されたページにアクセスしてもなぜかつながらなかったので、今回はUbuntuにインストールしたmetasploitからシェルコード化ツールと暗号化ツールをつかってwindowsで電卓を起動させるシェルコードを生成し、それを先のプログラムにコピペした。

そしてプログラムをコンパイルして実行すると電卓が起動した。ちなみに、本の通りにweb上でシェルコードを生成したのを利用すると電卓がフリーズするらしい。原因はexit()と例外の設定の関係らしい。今回ubuntuのmetasploitで作製したシェルコードではフリーズしなかったがその原因は、シェルコード作製に使ったツールが気を利かせてその対策をした上でのコードを生成したからだと推測される。

次の実験ではあらかじめ作っておいたバッファオーバーフローの脆弱性を持つプログラムに対して先のシェルコードを挿入し電卓を起動しようと試みる。

と、その前に、インラインアセンブラを用いたESPの値を表示するだけのプログラムを作りそれを用いてESPを確認した(疑問:espの値なんてスタックに応じて頻繁に変化するものなのにこんないい加減なのでいいものか?)

実験に用いた脆弱性のあるプログラムは400個の要素を持つchar型配列を用いているので、esp+400がPUSHされているebpのアドレス、esp+404がPUSHされているeipのアドレスが格納されていると考えられるので本を参考にして、
24バイトのNOPと226バイトのシェルコード、さらに154バイトのNOPと4バイトの書き換える戻りアドレスから構成されるpayloadをpythonによって文字列に格納し、それをos.spawnvの引数に利用して脆弱性のあるプログラムを呼び出した。が、うまくいかなかった。pythonいわくpayloadは文字列じゃないので引数に使えないとかいうことらしい。なぜだ!?

機械があればperlでやり直してみたいと思う。今回は疲れたのでここまで。

続く。

スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/100-36f44484

この記事へのトラックバック

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。