Miért ez a hibaüzenetet adja az alábbi stack overflow?
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.
"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)
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. :)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!