Kezdőoldal » Számítástechnika » Programozás » Miért ez a hibaüzenetet adja...

Miért ez a hibaüzenetet adja az alábbi stack overflow?

Figyelt kérdés

Megnéztem ezt a videót:

www.youtube.com/watch?v=2CR3ZmcUA1o


Szeretném kipróbálni az exploitírást.Így aztán csináltan egy stack overflow-t a videó alapján íme a kódja:


#include <cstring>


void function(char *str)

{

char buffer[1024];

strcpy(buffer,str);

}

int main(int argc,char *argv[])

{

char aaa[500];

function(argv[1]);

}

A kód tudom hibás nem is ez a lényeg.


Megadtam neki 1038 db A betűt( azaz tömbméret+EDP mérete+EIP mérete)( tehát a videó azt írja, hogy

0x41414141 címnél kellene elszállnia a programnak)

Nem az jött ki mint a videóban hanem ez:

Hibás alkalmazás: example.exe, verzió: 0.0.0.0, hibás modul: msvcrt.dll, verzió: 7.0.2600.5512, memóriacím: 0x0002745b.

Így viszont nem értem miért nem jó a programom.

Windows XP SP3-at használok, Dev-c++ 4.9.9.2-vel fordítok.

Próbáltam állítani a fordítót, de nem nagyon tudom, hogy mit kellene megadni, hogy ne ellenörizze a tömböm méretét.

Az általuk megadott DVDtools linkjét ismerem( összesen 4,2 giga), de nem szeretnék "kirügyezni" mire a mobilnetemmel lejön négy gigabyte, úgy, hogy 100 mega nekem 2 óra hosszába telik mire lejön.


Megpróbálok most Code:blocks-al fordítani, próbáltam visual studio 2008-al is fordítani.

Gcc-ben mit kell megadjak, hogy ne végezzen az operációs rendszer stack ellenörzést?

Előbb csak próbálkozni szeretnék, hogy működnek az exploitot, de még az EIP-t sem sikerült felülírnom.


2013. jún. 3. 09:15
 1/2 anonim ***** válasza:

[link]

"For most operating systems, gcc does not perform stack overflow checking by default."

Alapból elvileg nem szúr be túlcsordulás ellenőrző kódot.


Az msvcrt egy MS Visual-C library, ahol viszont lehet, hogy alapból betesz verem csekkolást. A Code::Blocks jó ötlet, az alatt elvileg gcc (Win: minGW) van.


(Amúgy a puffer túlcsordulásos támadást próbálod? :D)

2013. jún. 5. 11:50
Hasznos számodra ez a válasz?
 2/2 A kérdező kommentje:

Jaja azt próbálnám. Amúgy rájöttem, hogy nálam a EIP elé bekerült a argumentumokra mutató pointer. Így négy byte-ot még hozzá kellett írjak, hogy felül tudjam csapni az eip-t.


A MSVCRT nem rak be ellenörzést, ha nem kéri az ember, azóta haladtam egy kicsit. A visual c++-nál pedig van stack cookie, de meg lehet kerülni azt is. (egyszerűen nem írod felül)


SP3-as windows-on próbáltam. Elindult a calc.exe, meg elindítottam a meterpretert is. :)

2013. jún. 13. 11:01

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!