Dag 6 OSCP | Bash Tricks, Redirection en Piping

Reading Time: ( Word Count: )

December 11, 2020
Nextdoorsec-course

Ik zal je wat trucjes laten zien in de Bash of Z shell die je zullen helpen met productiviteit.

Je hebt waarschijnlijk al begrepen dat Bash een geschiedenis bijhoudt van de commando’s die je typt, standaard houdt het 1000 regels code bij. Je kunt het zien bij de terminalinstellingen, onder het tabblad “Gedrag”, daar zou moeten staan “Grootte geschiedenis (in regels)”.

Laten we nu naar de praktische kant gaan. Laten we, nadat we veel commando’s hebben getypt, het commando“history” verkennen.

┌──(kali㉿kali)-[~] └─$ geschiedenis 1 echo $$ 2 afslag 3 echo $globalvar 4 omgeven 5 duidelijk 6 sudo traceroute -I nextdoorsec.com 7 sudo traceroute -T nextdoorsec.com 8 sudo traceroute -U nextdoorsec.com ...

 

Je kunt zien dat elk commando genummerd is, dus in plaats van ze over te typen, kunnen we de geschiedenisuitbreidingsfaciliteit gebruiken om ze eenvoudig opnieuw uit te voeren door gebruik te maken van het nummer.

Typ het teken “!” gevolgd door het regelnummer om de opdracht uit te voeren.

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

 

Om het laatst uitgevoerde commando opnieuw uit te voeren typ “!!”.

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

 

Standaard wordt de opdrachtgeschiedenis opgeslagen in het bestand .bash_history in de homedirectory van de gebruiker. Twee omgevingsvariabelen bepalen de grootte van de geschiedenis: HISTSIZE en HISTFILESIZE.

HISTSIZE bepaalt het aantal commando’s dat in het geheugen wordt opgeslagen voor de huidige sessie en HISTFILESIZE configureert hoeveel commando’s er in het geschiedenisbestand worden bewaard. Deze variabelen kunnen bewerkt worden naar onze behoeften en opgeslagen worden in het Bash configuratiebestand (.bashrc) dat we later zullen verkennen.

Een andere handige truc is het indrukken van CTRL + R, net als het zoeken naar een woord op een pagina met CTRL + F, maar deze keer in onze geschiedenis. Het heet reverse-i-search faciliteit. Het eerste resultaat is de meest recente opdracht die de letter/het woord bevat dat je hebt ingevoerd.

┌──(kali㉿kali)-[~] (omgekeerd zoeken)`h': geschiedenis

 

Wat zijn omleiding en piping?

 

STDIN, STDOUT en STDERR

Elk programma dat wordt uitgevoerd vanaf de commandoregel heeft drie datastromen die dienen als communicatiekanalen met de externe omgeving. Deze stromen zijn als volgt gedefinieerd:

Naam stroom Beschrijving
0 Standaard invoer (STDIN) Gegevens ingevoerd in het programma
1 Standaard uitgang (STDOUT) Uitvoer van het programma (standaard terminal)
2 Standaardfout (STDERR) Foutmeldingen (standaard ingesteld op terminal)

 

Om het eenvoudig te zeggen: omleiding wordt gebruikt om om te leiden de standaard uitvoer, standaard invoer of standaard fout naar een bestand of stroom, bijvoorbeeld ls > output.txt. (Opmerking – als output.txt bestaat, wordt het overschreven en is het niet terug te draaien)
Normaal gesproken zou het resultaat/uitvoer naar de terminal worden getoond/afgedrukt, maar nu hebben we de standaarduitvoer omgeleid naar het bestand output.txt met behulp van de optie > operator.

┌──(kali㉿kali)-[~] └─$ ls > output.txt
┌──(kali㉿kali)-[~] └─$ cat uitvoer.txt Desktop Documenten Downloads Muziek Opmerkingen uitvoer.txt Foto's Publiek Sjablonen Video's

 

We kunnen omleiding ook “andersom” gebruiken. Om gegevens de “andere kant” op te sturen, namelijk vanuit een bestand, gebruiken we de optie < operator. In het onderstaande voorbeeld leiden we de standaard invoer van het commando“wc” om met gegevens die rechtstreeks afkomstig zijn van het bestand dat we in het vorige voorbeeld hebben gegenereerd. “wc -m” telt de karakters in het bestand.

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

 

Laten we de standaardfout omleiden terwijl we de bestandsdescriptornummers (de rode nummers in de tabel hierboven) gebruiken op onze opdrachtregel. We leiden de foutmelding om naar een bestand door streamnummer 2 aan de “>” operator.

┌──(kali㉿kali)-[~] └─$ cat file.txt cat: file.txt: Geen bestand of map van deze aard
┌──(kali㉿kali)-[~] └─$ cat file.txt 2> error.txt
┌──(kali㉿kali)-[~] └─$ cat error.txt cat: file.txt: Geen bestand of map van deze aard

Leidingen

Leidingen ( | ) worden gebruikt om de uitvoer door te geven aan de invoer van een ander programma of hulpprogramma . De pipe neemt alles wat naar de standaard uitvoer van cat error.txt wordt geschreven en stuurt het naar de standaard invoer van wc -m die het vervolgens naar de standaard uitvoer afdrukt, tenzij anders aangegeven.

┌──(kali㉿kali)-[~] └─$ cat error.txt cat: err.txt: Geen bestand of map van deze aard
┌──(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

Automated vs Manual Penetration Testing

Automated vs Manual Penetration Testing

Pentesting is largely divided into two methodologies: Automated vs Manual Penetration Testing. Both have ...
8 Steps in Penetration Testing You Should Know

8 Steps in Penetration Testing You Should Know

Mastering the art of penetration testing has become a critical ability for security experts to combat cyber ...
Spear Phishing vs Whaling: What is the Difference

Spear Phishing vs Whaling: What is the Difference

Spear phishing is a particularly devious type of phishing assault in which the individual targeted plays a ...
0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *