Shellcode geht nicht?!

So den Code habe ich mittlerweile zum laufen gebracht, nur wie macht man es das ich ihn in eine executable stack einschleuse?hat jemand ein tipp oder ein link für mich
 
Zuletzt bearbeitet:
per Buffer-overflow ;)
da gibt es einige gute Artikel drüber im netz, aber achte auf DEP und ASLR
 
Gut endlich mal jemand mit dem man sich unterhalten kann darüber und der auch versteh worum es geht.

Also ok das mit dem Overflow war mir ja schon klar. Ich dachte den ASLR kann ich schon mit der methode umgehen das ich die letzte return anweisung überschreibe. ASLR war doch nur zuständig für den wechselnden Speicher? Das problem was ich jetzt habe ist doch das NX-Bit oder??
Ja ich habe es mit der Holzhammermethode versucht nur er sagt wie gesagt immer wenn er auf mein script scpringt speicherzugriffsverletzung.
 
Die Speicherzugriffsverletzung deutet darauf hin, dass du in einem nicht ausführbaren Speicher Code auszuführen versuchst. Heute umgeht man DEP so, dass man in dem Zielprogramm ein Modul X sucht, welches kein ASLR benutzt. Anschließend manipuliert man den Stack (/Stackpointer) so, dass man Code von X ausführen kann (aka ROP) und so DEP für einen bestimmten Speicherbereich deaktiviert (dafür werden von Windows Funktionen bereitgestellt) und dort sein eigentliches Payload ausführt. Das ganze ist natürlich nur möglich, wenn DEP für diesen Prozess auf OptIn gesetzt ist, bei AlwaysOn muss man mit reinem ROP vorlieb nehmen.
 
Ok das ist ja schonmal verständlich für mich.

Mir geht es jetzt in erster linie nicht darum fremden code zu unterwandern, sondern erstmal ein testcode von mir.

Code:
#include <stdio.h>

int main(int argc, char *argv[]) {
   char buffer[50];

   printf("buffer is at %p\n", &buffer);

   if(argc > 1)
      strcpy(buffer, argv[1]);

   return 1;
}

so wenn ich da die return funktion überschreibe mit einer root-shell bekomme ich den fehler.

wie sieht den code aus der ohne ASLR geht, ich dachte das ist eine Kernel option. und gillt für den ganzen code?

Nur so zur info ich bin in linux kernel 2.6.38
 
Sodas mit dem ROT hab ich glaube ich schonmal mit der Hammermethode hinbekommen. zumindesten kommt bei jeden 10 versuch mal nicht speicherzugriffsverletzung sondern gleich der prompt.
Nur ich glaube ich setzte die Rücksprungadresse falsch. vorallem was mich wundert normalerweise sollt es doch einbezug von buffer(für overflow) und der return adress geben. aber das variert um arsch viel mal negativ mal positiv, da findeich keine beziehnung zuanander?? laut den tutorialssollte es doch immer den selben wert schwanken.
 
Zurück
Oben