Programmoutput als Parameter



  • Passt vielleicht nicht 100%ig, aber das Problem bringt mich bei meine Facharbeit über Buffer Overflows mittlerweile zum verzweifeln:

    Ein Programm mit einer potenziellen Schwachstelle soll mit der Ausgabe(stdout) eines anderen(Shellcode zum einschleusen in das 1. Programm) als Parameter gestartet werden. In meinem Buch soll das einfach mit ./programm1 ./programm2 geschehen, bzw mit "run ./programm2" im Debugger. Nach endloser Probiererei hab ich dann im gdb herausgefunden, dass nicht nich Ausgabe des zweiten Programms, sondern einfach "./programm2" als String übergeben wird. Wie übergebe ich denn die Ausgabe?

    Einfach kopieren und einfügen geht nicht, weil der Shellcode offensichtlich etliche Escape-Zeichen etc. enthält, welche zu Zeilenumbrüchen, Piep-Tönen und sonstigem bei manueller Eingabe führen..



  • Hab ich dich richtig verstanden, dass du innerhalb von gdb, die Ausgabe von Programm A als Argumente an Programm B übergeben willst?

    Bei mir geht dass, wie man's aus der bash & co kennt:

    $ gdb progB
    (gdb) run `progA`

    Beachte, die backticks. Wenn du die nicht findest, nimm:

    (gdb) run $(progA)



  • Oh man, es lag tatsächlich an diesen backticks. Hab die winzigen Dinger im Buch einfach übesehen...
    Arbeite sonst nicht mit Linux, kenne deswegen auch nicht bash & co.

    Funzt jetzt genau so wie es soll, danke.


Anmelden zum Antworten