Ich habe exemplarische Vorgehensweisen für verschiedene Exploit-Übungen für Linux-Anwendungen verfolgt. Ich verstehe den Inhalt dieser gut genug, aber einige beziehen sich auf die Verwendung von Katze, um "das Rohr offen zu halten", z . B. hier .
Zum Beispiel:
(python2 exploit.py ; cat) | ./programToExploit
Was bedeutet es in der Praxis eigentlich, das Rohr offen zu halten, und wie wird das Rohr wie beim obigen Befehl offen gehalten?
Antworten:
Hast Du es versucht?
Sehen Sie den Unterschied zwischen
und
oder,
Hier
sh -s
wird eine Shell-Sitzung gestartet, die Befehle liest, die von der Standardeingabe (-s
) ausgeführt werden sollen.Im ersten Beispiel wird die Shell einfach ausgeführt
ls
und beendet (da keine Eingabe mehr erfolgt).Im zweiten und dritten Beispiel wird die Shell ausgeführt
ls
und wartet, bis keine Eingabe mehr erfolgt. Der Eingabestream zush -s
wurde zuerst vomecho
Befehl generiert ,cat
übernahm dann aber die Rolle. Dercat
Prozess liest aus der übergeordneten Shell-Sitzung und leitet Befehle über die Pipe an weitersh -s
. Wenn Siels
oder andere Befehle eingeben (es wird keine Eingabeaufforderung angezeigt), führt die Shell diese Befehle aus.Dies wird fortgesetzt, bis Sie den
cat
Vorgang beenden , indem Sie Ctrl+Dauf eine leere Zeile drücken , um das Ende der Eingabe zu signalisieren.Ich glaube, das ist es, was du mit "offen halten" meinst.
quelle