Tag 6 OSCP | Bash Tricks, Umleitung und Piping

Reading Time: ( Word Count: )

Dezember 11, 2020
Nextdoorsec-course

Ich zeige Ihnen einige Tricks auf der Bash oder Z-Shell, die Ihnen bei der Produktivität helfen werden.

Sie wissen wahrscheinlich, dass die Bash eine Historie der von Ihnen eingegebenen Befehle führt, standardmäßig speichert sie 1000 Codezeilen. Sie können sie in den Terminaleinstellungen unter der Registerkarte „Verhalten“ einsehen, dort sollte „Größe des Verlaufs (in Zeilen)“ stehen.

Kommen wir nun zur praktischen Seite. Nachdem wir viele Befehle getippt haben, wollen wir uns mit dem Befehl„history“ beschäftigen.

┌──(kali㉿kali)-[~] └─$ Geschichte 1 echo $$ 2 Ausfahrt 3 echo $globalvar 4 env 5 klar 6 sudo traceroute -I nextdoorsec.com 7 sudo traceroute -T nextdoorsec.com 8 sudo traceroute -U nextdoorsec.com ...

 

Wie Sie sehen, sind die einzelnen Befehle nummeriert, so dass wir sie nicht erneut eingeben müssen, sondern sie mit Hilfe der Verlaufserweiterung einfach erneut ausführen können, indem wir die Nummer verwenden.

Geben Sie das Zeichen „!“ gefolgt von der Zeilennummer ein, um den Befehl auszuführen.

┌──(kali㉿kali)-[~] └─$ !3 echo $globalvar Global Var

 

Um den zuletzt ausgeführten Befehl erneut auszuführen, geben Sie „!!“ ein.

┌──(kali㉿kali)-[~] └─$ !! echo $globalvar Global Var

 

Standardmäßig wird der Befehlsverlauf in der Datei .bash_history im Home-Verzeichnis des Benutzers gespeichert. Zwei Umgebungsvariablen steuern die Größe der Historie: HISTSIZE und HISTFILESIZE.

HISTSIZE steuert die Anzahl der Befehle, die für die aktuelle Sitzung im Speicher abgelegt werden, und HISTFILESIZE legt fest, wie viele Befehle in der Verlaufsdatei gespeichert werden. Diese Variablen können entsprechend unseren Bedürfnissen bearbeitet und in der Bash-Konfigurationsdatei (.bashrc) gespeichert werden, die wir später noch genauer untersuchen werden.

Ein weiterer nützlicher Trick ist das Drücken der Tastenkombination STRG + R, genau wie die Suche nach einem Wort auf einer Seite mit STRG + F, aber dieses Mal in unserem Verlauf. Das nennt man Reverse-i-Suchfunktion. Das erste Ergebnis ist der letzte Befehl, der den von Ihnen eingegebenen Buchstaben/Wort enthält.

┌──(kali㉿kali)-[~] (reverse-i-search)`h': Geschichte

 

Was sind Umleitung und Verrohrung?

 

STDIN, STDOUT und STDERR

Jedes von der Befehlszeile aus ausgeführte Programm hat drei Datenströme, die als Kommunikationskanäle mit der externen Umgebung dienen. Diese Ströme sind wie folgt definiert:

Name des Stroms Beschreibung
0 Standard-Eingang (STDIN) In das Programm eingespeiste Daten
1 Standardausgang (STDOUT) Ausgabe des Programms (Standardeinstellung: Terminal)
2 Standardfehler (STDERR) Fehlermeldungen (Standardeinstellung: Terminal)

 

Um es auf die einfachste Art und Weise zu sagen: Die Umleitung dient der Umleitung von die Standardausgabe, die Standardeingabe oder den Standardfehler entweder in eine Datei oder einen Stream, z. B. ls > output.txt. (Hinweis: Wenn die Datei output.txt bereits existiert, wird sie überschrieben und kann nicht rückgängig gemacht werden)
Normalerweise würde es das Ergebnis/die Ausgabe auf dem Terminal anzeigen/ausdrucken, aber jetzt haben wir die Standardausgabe in die Datei output.txt umgeleitet, indem wir die > Betreiber.

┌──(kali㉿kali)-[~] └─$ ls > output.txt
┌──(kali㉿kali)-[~] └─$ cat ausgabe.txt Schreibtisch Dokumente Herunterladen Musik Hinweise output.txt Bilder Öffentlich Schablonen Videos

 

Wir können die Umleitung auch in die „andere Richtung“ nutzen. Um Daten auf dem „anderen Weg“, d.h. aus einer Datei, zu senden, verwenden wir die < Betreiber. Im folgenden Beispiel leiten wir die Standardeingabe des„wc„-Befehls mit Daten um, die direkt aus der Datei stammen, die wir im vorherigen Beispiel erzeugt haben. „wc -m“ zählt die Zeichen in der Datei.

┌──(kali㉿kali)-[~] └─$ wc -m 84

 

Leiten wir den Standardfehler um, indem wir die Dateideskriptor-Nummern (die roten Zahlen in der Tabelle oben) in unserer Befehlszeile verwenden. Wir leiten die Fehlermeldung in eine Datei um, indem wir die Streamnummer 2 an das „>Operator“.

┌──(kali㉿kali)-[~] └─$ cat file.txt cat: file.txt: No such file or directory
┌──(kali㉿kali)-[~] └─$ cat file.txt 2> error.txt
┌──(kali㉿kali)-[~] └─$ cat error.txt cat: file.txt: No such file or directory

Rohrleitungen

Rohre ( | ) werden verwendet, um die Ausgabe an die Eingabe eines anderen Programms oder Dienstprogramms zu übergeben. Die Pipe nimmt alles, was von cat error.txt auf die Standardausgabe geschrieben wird, und sendet es an die Standardeingabe von wc -m, die dann auf der Standardausgabe ausgegeben wird, sofern nichts anderes angegeben ist.

┌──(kali㉿kali)-[~] └─$ cat error.txt cat: err.txt: No such file or directory
┌──(kali㉿kali)-[~] └─$ cat error.txt | wc -m 41
┌──(kali㉿kali)-[~] └─$ cat error.txt | wc -m > characters.txt
┌──(kali㉿kali)-[~] └─$ cat characters.txt 41
Aydan Arabadzha

Aydan Arabadzha

Author

Aydan, a cybersecurity ace and AI visionary, thrives on the frontlines of offensive security. His passion birthed NextdoorSec, a groundbreaking cybersecurity firm. A relentless pioneer, Aydan is persistently pushing boundaries, shaping the future of the digital world one byte at a time.

Other interesting articles

„Unsichtbare Risiken: Wie der gestohlene Microsoft-Schlüssel mehr als erwartet freischalten könnte“

Der angebliche Diebstahl eines Microsoft-Sicherheitsschlüssels könnte es Spionen, die mit Peking in Verbindung ...

„Die KI-Leistung von ChatGPT: Jenseits des Turing-Tests oder noch nicht ganz da?“

ChatGPT, ein Chatbot mit künstlicher Intelligenz von OpenAI, hat aufgrund seiner außergewöhnlichen Fähigkeiten ...
0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert