基于PythonPoc框架

0. 前言

因疫情在忙其他事情也很久没上,无意看到一个较为完善的poc框架及原理这里分享大家共同学习讨论。

1. 框架代码如下

#!/usr/bin/env python
#coding:utf-8
import requests

class misiinfo(object):
    def __init__(self,request=None,response=None):
        self.info={}
        self.info["author"]="Mr_Python"        #作者
        self.info["name"]=""     #漏洞名称
        self.info["time"]="2019-1-18"          #POC编写时间
        self.info["ontent"]=""   #存在漏洞地址

def jiance(payload):
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',}
    response = requests.session()       #相当于保存cookie,方便下一个访问
    response_ = response.get(payload,timeout=3,verify=False,headers=headers)
    return response_

"""漏洞验证函数"""
def audit(arg):
    payload=arg+'path'
    try:
        response=jiance(payload)
        print(response.content)
        if response.status_code==200 and "filename:" in  response.content:
            if warning_info:
                print(warning_info)
    except Exception as error:
        print (error)

if __name__ == "__main__":
    audit("http://xxx.cn")

2. 思路

Requests库简介:
Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。
大概思路:
首先导入我们需要的库request,然后模拟出浏览器的请求方式,定义payload以及方法,做一个异常处理然后返回结果。

3. 代码基础框架

1.导入 requests库

 import requests
  1. 定义类
class nameinfo(object):
  self.info["Author"]={"Mr_Python"}
  self.info["Time"]={"2020.01.24"}
  self.info["Name"]={"注入批量检测"}
  self.info["Number"]={"CNVD"}
  self.info["Rce"]={"小型cms注入批量检测工具"}
def __init__(self,request=None, response=None):  #这个则为类的初始化,它在类的实例话操作后,会自动调用
  1. def 定义一个方法
    使用 def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的 具体功能实现代码,如果想要函数有返回值, 在 expressions 中的逻辑代码中用 return 返回。
    首先我们定义一个jiance里面包含了headers,response.
def jiance(payload):
    headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36',}
    response = requests.session()       #相当于保存cookie,方便下一个访问
    response_ = response.get(payload,timeout=3,verify=False,headers=headers)
    return response_

注: response_ = response.get(payload,timeout=3,verify=False,headers=headers这个也就是 get response中的payload,以及移除ssl证书取消警告,取上文中我们设置的headers,达到请求的作用。

4. 漏洞验证函数

def audit(arg):
  payload = arg + 'path'
  try:
        response = jiance(payload)
        print(response.content)

payload= arg+‘path’
设置payload=arg(arg为下面我们传上来的url)+ 后面的payload的
完成的请求则为 http://xxx.com/path
Try:为异常处理都是于except来用,达到异常处理。
response=jiance(payload) 读取出http所返回的状态
print(response.content)打印出我们 所读取出来的http的状态

if response.status_code==200 and "filename:" in  response.content:
            if warning_info:
                print(warning_info)
    except Exception as error:
        print (error)

if __name__ == "__main__":
    audit(""): 如果执行主函数我们便会执行下面的audit
Audit又传到了上面的arg里面,测完成整个payload的测试

5. 结尾

其实这个poc还可以根据自己需求进行更改这个框架只是为了有一个大概思路。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值