Posts by Barpi

    for me its the 4th approach, because i left the first approach after converstion frustrations yesterday and picked it up again today at afternoon. i did everything you tried so far

    i know that already ;) god dammit, a whole day of "ah, now i have it - SH*T this won't work" kills me. can anybody give a clear hint what is even possible and where to head at?

    bei mir führt der buffer overflow zur exekution von shellcode der eine hier ungenannte (vielleicht gibts ein sehr ähnliches beispiel in den nächsten jahren wieder) funktion per syscall ausführt, die alle gid's ändert (real, effective und saved - vermutlich überflüssig, aber angeblich die "kompletteste/sicherste" variante und ich hatte mich lange in der syscall nummer vergriffen, darum bin ich dann am schluss auf nummer sicher gegangen. beispiele fürs zusammenbasteln von so einem syscall gibts genug im netz, meistens mit einer anderen funktion/id, aber bis auf ein paar zahlen ist das der selbe code), danach wird eine shell gespawned. die so gespawnte shell lässt mich dann /bin/grade aufrufen...
    mann kann auch statt "/bin/sh" gleich "/bin/sh/ -c /bin/grade" vom shellcode ausführen lassen, dann wird nur blöderweise der shellcode noch etwas aufwändiger - was bei mir leider zu gröberen problemen mit dem resultierenden hexcode geführt hat. mehr hexcode -> mehr möglichkeiten dass man ein nicht benutzbares zeichen trifft ;)


    ich vermute, das ist die straight-forward lösung, wenn man von den folien, der angabe und zahlreichen beispielen im netz ausgeht.


    deine lösung ist auch interessant, darauf wäre ich vermutlich so schnell nicht gekommen. schade, dass es zu spät war.

    leider war das mit dem shellcode und der egid der falsche weg und das hat mir dann zuviel zeit gekostet.


    dann ist mir nur schleierhaft, warum der "falsche weg" bei mir funktioniert hat... freut mich, dass du den "richtigen" gefunden hast. Oo
    wenn du einen tick vor dem letzten moment angefangen hättest, müsstest du jetzt nicht die schuld auf "falsche tips" schieben. das klingt ja, als wär ich jetzt schuld. und das mein ich jetzt keineswegs bös - tut mir leid, dass ich dir nicht helfen konnte.

    nun ist die frage - wie kann ich das rückgängig machen? - kein plan :p


    ich kann dir leider nicht genauer helfen, ohne die lösung zu posten... ;) was so weit schon gesagt wurde:


    es ist NICHT "setgid(gid)" (die ist ja 201 und passt damit)
    in vuln1 wird "setregid(gid, egid) aufgerufen...
    lewurm hat in post #17 einen link gepostet (von den folien oder der angabe glaub ich) Setuid Demystified - da stehen dann etliche varianten, die auch die effective gid ändern...


    beispiele für den aufruf von syscalls im shellcode gibt es etliche, zB bei http://www.shell-storm.org/shellcode/shellcode-linux.php


    da siehst du schnell, dass es nur nötig ist, den befehl und die parameter in die richtigen register zu kopieren (oft wird parameter "0" für root verwendet, darum sieht man selten das übergeben des parameters an "bl" -> low byte von ebx glaub ich) und danach einen interrupt auszulösen... zusammenbasteln musst du dir es jetzt aber selber ;)


    wichtig ist dann nur noch die nummer des von dir gesuchten syscalls findest du in unistd.h in /usr/include/ - schau dir die mal an, dort findest du fürs erste nur einen "verweis" (cpu-abhängig) - mehr sag ich jetzt fürs erste nicht mehr ;)

    so weit so gut... also ist da offensichtlich ein unterschied zwischen gid und egid...?
    im programm wird anscheinend "setregid" vor echo aufgerufen (laut angabe), mit absicht ;) um genau die "effective gid" und damit die privilegien abzulegen... du musst also BEVOR du die shell spawnst, genau das wieder rückgängig machen... ich hab eine andere funktion wie vuln1 verwendet btw. der aufruf von set*id ist dann nur ein kurzer syscall im shellcode, das sollte möglich sein

    welche id stimmt nicht? (gib mal "id" ein, wenn du die shell offen hast)


    vielleicht hilft auch folgender satz aus der angabe: "Note that the vulnerable program (temporarily) drops the effective group privileges by invoking setregid before calling the vulnerable function [...]"

    ok, machs mal anderst... mach dir ein brakepoint (brake 19) nach dem strcat und schau mit "x/256xw $esp", wo dein argument hingeschrieben wird... dann siehst du hoffentlich auch deinen nop-sled und irgendwo in den willst du rein, so dass das der pointer bis zu deinem shellcode rutscht. alles klar so weit nehm ich an.
    und dann prüf warum er (statt dessen?) bei 0xbfff8ee landet

    ja, ich war schon dabei, genau das zu tun - aber mit einem einfacheren (kürzeren) shellcode der ohne die zeichen auskommt (nur set*id und shell spawnen) gings auch ;) und wenn ich dann auch gleich die richtige syscall number verwendet hätte, hätt's ab da weg gleich funktioniert :D
    was soll's, jetzt hab ich es wenigstens - danke allen für die unterstützung! :)

    so hab ich's auch gemacht... mit einem (deutlich) einfacheren shellcode funktioniert das jetzt bei mir auch ;)
    jetzt stimmt nur noch die egid noch nicht, muss wohl die funktion die ich aufrufe noch mal kontrollieren bzw. eine andere nehmen ;) das sollte jetzt kein problem mehr sein, danke!

    soda, jetzt kommt vielleicht die blödste frage überhaupt...


    bei mir hat eigentlich alles schon ein mal funktioniert, ich hab die richtigen adressen, usw, ichh kann shellcode ausführen usw, mein shellcode läuft mit hilfe von dem snippet auch:


    char shellcode[]=
    "\xZZ\x....";

    void main()
    {
    int (*shellfp)();
    shellfp = shellcode;
    shellfp();
    }


    aber mit vuln1 kann ich ihn nicht ausführen, weil ich es nicht schaffe, shellcode zu schreiben der als 1 argument aufgefasst wird (es kommen keine 'NULL' vor, aber diverses andres zeugs), sogar wenn ich den exploit3 von aleph hernehm hauts ihn mir zam, und langsam blick ich nicht mehr durch.
    ich hatte gehofft, es hat da jemand vielleicht einen tip für mich, wie ich das schön übergeben kann oder was ich überseh :shiner:


    habt ihr shellcode geschrieben der eine shell spawned und dann /bin/grade in der shell manuell aufgerufen, oder ruft der shellcode bei euch /bin/sh -c /bin/grade auf?

    bei den gesamtpunkten steht note oder gesamtpunkte???


    bei mir steht beides


    Code
    1. Ihre Gesamtpunktezahl beträgt xxx.00. Ihre Note ist x.


    vorausgesetzt es handelt sich tatsächlich um die endgültige punktezahl:
    auch ich hab empfindliche abzüge bekommen, das war aber beim ersten test auch schon nicht anders, und ich hab' schon öfter gehört, dass bei sysprog jeder noch so kleine fehler die punktezahl empfindlich verringert...
    von dem her wär ich eig. ziemlich froh über meine note, und sowieso, "hauptsache durch..."
    zur einsichtnahme würde ich evtl. trotzdem gehen, wenigstens um zu wissen wo denn der wurm drin war :)

    ist aber zumindest ein zeichen, dass etwas vorwärts geht :) *shibby*


    bei mir steht darunter eine gesamtpunktezahl, die beträchtlich von test1 + abgabegespräche abweicht, ohne dass in der auflistung eine punktezahl für test2 steht. vielleicht ist das nur ein kleiner anzeige-fehler im system (aber an die gesamtpunktezahl könnte ich mich gewöhnen ;))?

    wegen einer frau bleibt das ganze system stecken!!!


    geh! dass die sekretärin nicht ans telefon geht, hat nichts mit dem "system" zu tun... und sie korrigiert sicher auch nicht die prüfungen. nebenbei dürfen auch sekretärinnen urlaub machen, aber sicher auch nicht 3 monate. wie gesagt, ich glaub' kaum, dass du ihr hier für IRGENDWAS die schuld geben kannst.


    und was genau ist jetzt deiner meinung nach stecken geblieben? bevor das nächste semester losgeht, ist es noch mehr als ein monat. es ist zwar ärgerlich das ergebnis noch nicht zu kennen, aber ich wüsste nicht was im nächsten monat anderst laufen sollte, wenn wir das ergebnis jetzt schon wüssten (hauptsache wir bekommens überhaupt).
    nicht bös' gemeint, aber das war imho eine ziemlich unnötige meldung.

    wenn es so weiter geht, wirkt sich der sinnlose test garnicht auf die note aus, und wir dürfen ihn wiederholen, da er verschwunden ist ;)


    oder der studienassistent versucht der einsichtnahme aus dem weg zu kommen und hofft, um so später er die ergebnisse rausgibt, um so eher verpassen die leute dann den termin... (weil das ergebnis so furchtbar ausgefallen ist) ;)


    spaß beiseite: langsam versteh ich es auch nicht mehr. ich wusste zwar bisher nicht, dass es ein geschriebenes 4-wochen-gesetz gibt, aber die meisten ergebnisse sind bis dann korrigiert und meistens gibts bis dann auch ein zeugnis... sehr verwunderlich das ganze, vor allem weil der test wirklich nicht schwer zu korrigieren sein dürfte und nicht ein mal eine meldung auf die lva-homepage kommt. wieso der lva-leiter nicht mehr druck macht, ist mir auch nicht klar (vermutlich macht er das bereits, wir wissen es blos nicht).


    mich würde jetzt einfach mal interessieren was der studienassistent da oben treibt. hoffentlich ist es nix ernstes und er fängt sich bald wieder...

    oh man... ja, warum war mir schon klar ;) aber auch das andere hätte mir auf/ein-fallen können... :shiner:
    danke!

    vielleicht etwas blöd die frage, mir fehlt aber irgendwie der durchblick bei dem stoff...:


    wie schauts hier mit dem Fall w = 0 aus?


    edit: ah... ok. und warum? :)