radare2のGDBの<code>find &amp;system,+9999999,"/bin/sh"</code>と等価である何


4

' "/ binに/ shの" + 9999999、検索&システム' radare2の同等のGDBのに何ですか? ROP/return2libc技術に関連

。デバッグモードで電報

@ radareからデビッドPolverariへ

6

まず第一に、私たちはradare2

$ r2 -d file 

文字列をデバッグモードでバイナリを開く必要があります/bin/shlibcsystem関数に存在するので、ライブラリが最初のuためにメモリにロードされなければなりませんそこにある文字列を見つける。エントリーポイントまでプログラムの実行を続けましょう。この時点では、libcはすでにメモリにロードされているはずです。 D ebug Cため

[0xf7f9bc60]> dcu entry0 
Continue until 0x565914a0 using 1 bpsize 
hit breakpoint at: 565914a0 
[0x565914a0]> 

dcuスタンドは、私たちがradareの検索機能を使用する必要があります/bin/shを見つけるには

ntil Uをontinue。デフォルトでは、radareは現在のメモリマップであるdbg.mapを検索しています。私たちの場合、/bin/shが私たちの現在のメモリマップになることを保証していません。

[0x080483d0]> e search.in = dbg.maps 

あなたがe search.in=?を実行します場合は、より多くのオプションを表示することができます。そのため、我々はそれがすべてのメモリで検索すると、私たちはそれを設定する必要がマッピングされます。視覚的に放射を構成するには、Veを使用します。

/コマンドで検索すると、/?を実行すると膨大な検索オプションが表示されます。 /bin/shため

レッツ・検索:

[0x565914a0]>//bin/sh 
Searching 7 bytes from 0x00000000 to 0xffffffffffffffff: 2f 62 69 6e 2f 73 68 
Searching 7 bytes in [0x56591000-0x56592000] 
hits: 1 

<..truncated..> 

Searching 7 bytes in [0xf7d97000-0xf7f66000] 
hits: 1 

0xf7f1180a hit1_2 .b/strtod_l.c-c/bin/shexit 0canonica. 

ほら! radareは0xf7f1180aという文字列を見つけました。

速度を上げるために、systemの中にあるlibcから検索を開始するように指示することができます。 は、まず我々はdmiでこれを行うと、その後systemから開始するようにsearch.fromを設定することができ、libcの中systemのアドレスが必要です。

[0x565914a0]> dmi libc system 
vaddr=0xf7dd3700 paddr=0x0003c700 ord=566 fwd=NONE sz=1126 bind=LOCAL type=FUNC name=do_system 
vaddr=0xf7ebf470 paddr=0x00128470 ord=4988 fwd=NONE sz=102 bind=LOCAL type=FUNC name=svcerr_systemerr 
vaddr=0xf7dd3c50 paddr=0x0003cc50 ord=6919 fwd=NONE sz=55 bind=WEAK type=FUNC name=system 

[0x565914a0]> e search.from=0xf7dd3c50 
[0x565914a0]>//bin/sh 
Searching 7 bytes from 0xf7dd3c50 to 0xffffffffffffffff: 2f 62 69 6e 2f 73 68 
Searching 7 bytes in [0xf7dd3c50-0xf7f66000] 
hits: 1 

<..truncated..> 

0xf7f1180a hit2_0 .b/strtod_l.c-c/bin/shexit 0canonica. 

ここに行ってください!今、あなたはps @ 0xf7f1180aを使用して文字列を印刷したりしたいしかし、アドレスを使用することができます。


0

感謝しながら:

e search.in=range 
e search.from=<start_addr> 
e search.to=<end_addr> 

"/ /bin/sh"