Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » debuggen und buffer overflow

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
03.12.2004, 13:44 Uhr
~CisDur
Gast


hallo,

habe da eine frage bezüglich des stacks. ich habe folgenden codeausschnitt:


C++:
void test()
{
    char buf[5] = "\x01\x02\x03\x04";
    printf("Bitte Hex-Zeichen eingeben: ");
    getxs(buf);
    printf("Danke. \n");
    return;
}

int main()
{
    test();
    return 0;
}

void explode()
{
    printf("Booom!\n");
    exit(0);
}



die funktion getxs() nimmt so viele argumente die eingelesen werden und schreibt sie nach buf und fügt ein abschlusszeichen ein. wenn mehr als 4 args angegeben werden, dann wird das nicht überprüft, sondern es wird einfach weiter geschrieben.

ich habe den code jetzt schon öftere male debuggt doch leider verstehe ich nicht, was da alles auf den stack gelegt wird:
wo liegt hier der fehler:

main legt den ebp auf den stack
main legt die rückspringadresse auf den stack (dann sind wir in test)
test legt wieder ebp auf stack
test reserviert 5 byte auf stack und initialisiert diese
test legt adresse von buf auf stack
test legt rücksprungadresse auf stack

jetzt kommt die FUktion getxs, das ist aber egal, was die tut

ziel ist es mit einer passenden zeichenkette, die man eingibt, die rücksprungadresse von main zu überschreiben, also so, dass die Funktion explode aufgerufen wird. nach meiner vorstellung müsste dazu eine zeichenkette der länge:
13 byte
reichen, wobei byte 10, 11, 12, 13 die adresse von explode angeben müsste.
aus dem debugging ging aber hervor, dass ich ganze 32 bytes angeben muss.

was habe ich denn dann dabei nicht verstanden?

danke schonmal.

(ich hoffe, dass diese aufgabe nicht zu aufwendig für so ein forum ist und sich da jemand einließt, weil interessant ist es allemal)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.12.2004, 15:18 Uhr
Tommix




Zitat von ~CisDur:
ziel ist es mit einer passenden zeichenkette, die man eingibt, die rücksprungadresse von main zu überschreiben, also so, dass die Funktion explode aufgerufen wird.


Vergiß es.

- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.12.2004, 15:30 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


er will nen bufferoverflow ausnutzen um benutzerdefinierten code auszuführen, also root-xploits für anfänger
--
class God : public ChuckNorris { };

Dieser Post wurde am 03.12.2004 um 15:31 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.12.2004, 15:44 Uhr
Tommix



Das ist mir schon klar. Er soll vergessen, daß wir ihm dabei helfen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.12.2004, 16:05 Uhr
Bruder Leif
dances with systems
(Operator)


Keine Ausbildung zum Möchtegern-Cracker hier.
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.12.2004, 14:15 Uhr
Pablo
Supertux
(Operator)


Da CisDur erklärt hat (siehe also moment mal), wieso er das hier gepostet hat, öffne ich das Thema wieder.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 04.12.2004 um 14:16 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.12.2004, 14:34 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja ich find es auch etwas merkwürdig das man im 3ten semester schon mit so einer "hacker"-frage vollge"müllt" wird. Ich würde mal sagen du solltest mal den genauen wortlaut der aufgabenstellung und evtl eine Quellenangabe (die meisten inf-profs sind doch faul, die ziehen ihre aufgaben doch auch ausm inet bzw haben sie dort irgendwo stehen ) machen (wie hans schon gesagt hat). Wenn es stimmt werden wir dann auch versuchen dir zu helfen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.12.2004, 15:47 Uhr
~cisdur
Gast


hallo nochmals,

vielleicht sollte ich die frage umformulieren und anders stellen. es ist ja kein schweres durch das debuggen herauszufinden, wo die rücksprungadresse steht und wo die zeichenkette steht, so dass ich, wenn ich eine zeichenkette mit ausreichender länge eingebe, die rückspringadresse überschreiben kann. das ist auch ohne weiteres möglich, das bekomm ich auch ohne weiteres hin.

ich frage mich nur, warum die distanz 32 bytes sind. es bezieht sich also auf die nutzung des stacks. das stichwort alignment würde nochmals 3 byte (char[5] + 3) erklären aber dann wäre ich erst mit meiner rechnung bei: 16 bytes, also gerade mal die hälfte.

ich selbst mache ein doppelstudium dort an der tu, mathe und info.
nun, dass wir sowas im dritten semester machen, halte ich eigenltich gar nicht für so verkehrt. im dritten beschäftigen wir uns in info eigentlich ausschließlich mit Betriebssystemen, also z.B. Schedulingstrategien, Seitenzugriffsstrategien, und eben Speicher (-verwaltung). dass wir hauptsächlich C verwenden ist daher auch nicht verwunderlich. zum thema speicher gehört nunmal auch der stack und damit auch die sog. buffer overflow bugs.
hans, die stoffliche aufteilung bei uns ist eigentlich schon ziemlich anders als, das was du geschrieben hast. im ersten, zweiten semester hatten wir neben mikroprogrammierung und assembler (grundlagen der informatik) eine einführung in java und dann wurden alle (un-)möglichen entwurfsmuster wie composite pattern, brückenmuster, ... bis zum geht nicht mehr durchgenommen. dann gabs noch einen haufen terminierungsbeweise und hoorekalkül (korrektheitsbeweise).

An der TU München hält Frau Prof. Feldmann diese Vorlesung im Moment. www.net.in.tum.de falls es jemanden interessiert.

um es nochmals zu betonen, die aufgabe zu lösen ist kein problem gewesen, es geht mir nur um das verständnis.

gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.12.2004, 23:44 Uhr
ao

(Operator)



Zitat von ~cisdur:
nun, dass wir sowas im dritten semester machen, halte ich eigenltich gar nicht für so verkehrt.

Ich aber schon. Ich habe auch mal ein Studium hinter mich gebracht und kann mich noch gut erinnern, wie viele halbgare Chaoten da im dritten Semester rumsaßen, denen eine Anleitung zum Bombenbasteln gerade willkommen gewesen wäre.

Ich finde es paradox und verantwortungslos, Informatik-Studenten solche Aufgaben zu stellen. Als verantwortungsbewusste Informatiker dürfen sie solche Programme niemals schreiben oder verbreiten. Aber als Studenten müssen sie es tun, um ihren Schein zu kriegen?

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.12.2004, 11:16 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


frag ich mich auch was das mit informatik "Studium" zu tun haben soll ...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ Assembler ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: