Overflow main function
14-02-2008,15:29 doorlieque
Veel buffer overflow's die geschreven worden worden worden
geschreven vanuit een functie in veel voorbeelden. BV. Zoals
voorbeeld van http://www.linuxjournal.com/article/6701

http://rafb.net/p/wCsJhs69.html

Waarbij de void function gebruikt wordt voor een buffer overflow.
In dit voorbeeld zijn er maar twee buffers waar waarden voor zijn
gedeclareerd. En er dus een crash zou moeten op treden.

Wat veel niet weten is dat main zelf ook een functie is en kwets
baar kan zijn voor overflows. Om een simpel voorbeeld te geven

http://rafb.net/p/Qlweac30.html

Niemand zou verwachten dat ( * main) gedeclareerd zou kunnnen
worden in main zelf. Laat staan dat de pointer weg geschreven zou
kunnen worden in combinatie met int main. Dit zelfde proces
kan je ook toepassen bij een van de meest bekende buffer overflows
van strcpy. Een voorbeeld van strcpy overflow is :

http://rafb.net/p/hmtXzJ25.html

Door dat de pointer van *ptr te groot is onstaat er een buffer overflow.
Dit zelfde type kan je ook toepassen op main. Door main zelf als
functie te gebruiken. En de pointer van main te gebruiken.

http://rafb.net/p/PAUvES92.html

=================================================

Error!
=====
Microsoft visual c++ libary

program c:debugcpp1.c
module:I368
File:I368/chkesp.c
line 42

The value of ESP was not properly saved across a function call. This
is usually a
result of calling a function with one calling convention with a function
pointer
declared with a diffrent calling convention.

(press retry to debug the application)