2016-04-20 10 views
1

コンピュータ設計コースの課題として、私のチームは、バッファオーバーフローと発見したいくつかのガジェットを使用してリターン指向プログラミングを使用してシェルにアクセスする必要があります。我々は我々がすることができますr0にして、そこからロードすることができますいくつかのガジェットを使用して次にROPを使用してARM内のシェルにアクセスする

(GDB) find &system, +9999999, "/bin/sh" 

:GDBを使用して

は、我々は次のコマンドで「/ binに/ shの」文字列の場所を見つけました飛び込む 。

残念ながら、端末にアクセスする直前にセグメント障害が発生するたびに、私たちはこれでかなり失われており、あなたが私たちに与えることができるあらゆる助けを使うことができました。これを引き起こす一般的なエラーを知っている人はいますか?

(gdb) x/15a $sp 
0xbefffb40: 0x85a4 0x42424141 0x44444343 0x46464545 
0xbefffb50: 0xbeff0046 0xb6f55108 <inet6_opt_finish+56> 0xb6f84a60 
      0xb6f55104 <inet6_opt_finish+52> 
0xbefffb60: 0x0 0xb6ea3f6c <__libc_system> 0x0 0x84d0 <main> 
0xbefffb70: 0xb6ffc718 0xb6ffc400 0x0 

およびシステムに侵入した後:

(gdb) x/10a $sp 
0xbefffb68: 0x0 0x84d0 <main> 0xb6ffc718 0xb6ffc400 
0xbefffb78: 0x0 0x0 0x83bc <_start> 0x0 
0xbefffb88: 0x0 0x0 
+0

です。何を実行しようとしていますか? ''/bin/sh "'というテキストは?あなたは 'execv()'システムコールを実行する必要があります。質問にさらに情報を追加する必要があります。バイナリでROPガジェット検索ツールを使用しましたか?あなたが選んだものを表示できますか? –

+0

シェルを取得するために、r0に格納された引数 "bin/sh /"を使用して<__ libc_system>を実行しようとしています。ガジェットは手動でgrepを使って見つけました。我々は、不安定なガジェットを含むように投稿を編集する。 – Tesnich

答えて

0

がわからないあなたのメインプログラムは次のように探しているものだが、我々は我々のガジェットを通過し、システムに入る前に、

当社のスタックは、この右のようになります。私は前にこれを持っていたようです。クラッシュは恐らくあなたがジャンプしている/サムのサブルーチンに戻っているので、Android 5.0,1のための__libc_system()機能は少なくとも目に見えます。 ARM Procedure call standard(17ページのセクション5.3)から、ターゲットが親指であれば、返されるターゲットアドレスは+1でなければなりません。は0xb6ea3f6d