首页 > 数据库 >利用Sqlmap API接口联动Google Hacking批量SQL注入检测

利用Sqlmap API接口联动Google Hacking批量SQL注入检测

时间:2024-04-14 21:56:41浏览次数:27  
标签:Sqlmap Google scan url self slghack server API taskid

目录

前言

挖掘SQL注入漏洞的一种方式就是通过Google Hacking搜索那些可能存在SQL的URL,然后手工的探测注入点。但是现在的SQL注入漏洞的网站是比较少的了,所以这样一个一个手工测效率有一点低。

sqlmap比较好的一点是可批量扫描多个URL中的注入点,比如这样:

准备一个包含要扫描的URL列表的文件(每个URL占一行),然后使用 -m 选项指定要扫描的这个URL文件,执行如下的命令就可以:

sqlmap -m urls.txt --batch --level=3 --random-agent --dbs

还可以使用 --threads 来指定要使用的线程数。

slghack自动化搜集URL

最近写了一个小的python爬虫脚本,能从Google页面批量爬取URL。

slghack是一个基于Python第三方库yagooglesearch开发的,使用之前需要安装依赖: pip install yagooglesearch

项目地址: https://github.com/zhx-hex/slghack

Sqlmap API

在Sqlmap项目的根目录下面有个sqlmapapi.py,可能很少有人注意到。

sqlmapapi.py就是sqlmap的分布式扫描sql注入,可以利用sqlmapapi.py开启服务端口,然后向sqlmapapi发送请求,就可以进行sql注入。

使用方法也很简单 python sqlmapapi.py -s,在本地的8775端口就会开启一个sqlmapapi 的服务,也可以通过 -p 指定端口。

image

sqlmapapi 没有官方的API文档,只有一些第三方的文档。

参考文档:Unofficial SQLmap RESTful API documentation

大致工作流程:

  1. 通过GET请求 http://ip:port/task/new 创建一个新的扫描任务

  2. 通过POST请求 http://ip:port/scan/start 并通过json格式提交参数,开启一个扫描

  3. 通过GET请求 http://ip:port/scan//status 来获取指定的taskid的扫描状态:一种是run状态,一种是terminated状态

  4. 扫描完成后获取扫描的结果

脚本slghack_sqli

把slghack搜集到的URL复制到sql_urls.txt里面,就可以多线程批量检测了。

import json
import queue
import requests
from threading import Thread
from time import sleep

class slghack_sqli:
    def __init__(self, server="http://127.0.0.1:8775", urlsfile=None, output="sqli_result.txt"):
        self.server = server
        self.urlsfile = urlsfile
        self.ouput = output
        self.task_queue = queue.Queue()

    def get_urls(self):
        with open(self.urlsfile, "r") as f:
            for url in f.readlines():
                self.task_queue.put(url.strip())

    def sent_server(self):
        threads = []
        while not self.task_queue.empty():
            url = self.task_queue.get().strip()
            print(f"Target URL: {url}")
            t = Thread(target=self.scan, args=(url,))
            threads.append(t)
            t.start()

        for t in threads:
            t.join()

    def scan(self, url):
        try:
            # 通过GET请求 http://ip:port/task/new 创建一个新的扫描任务
            r = requests.get(f"{self.server}/task/new")
            taskid = r.json()['taskid']
            # 通过POST请求 http://ip:port/scan/start 并通过json格式提交参数,开启一个扫描
            r = requests.post(
                f"{self.server}/scan/{taskid}/start",
                data=json.dumps({'url': url}), headers={'content-type': 'application/json'}
            )
            # 通过GET请求 http://ip:port/scan//status 来获取指定的taskid的扫描状态
            r = requests.get(f"{self.server}/scan/{taskid}/status")
            count = 0
            while r.json()["status"] == "running":
                sleep(6)
                r = requests.get(f"{self.server}/scan/{taskid}/status")
                print(r.json()["status"])
                count += 1
                if count == 30:
                    # 每个task最多跑6*30=180s结束
                    requests.get(f"{self.server}/scan/{taskid}/stop")
            r = requests.get(f"{self.server}/scan/{taskid}/data")
            requests.get(f"{self.server}/scan/{taskid}/delete")
            if r.json()['data']:
                print("Injection found: " + url)
                with open(self.ouput, "a") as f:
                    f.write(url + "\n")
        except requests.ConnectionError:
            print("Connection error!")


if __name__ == '__main__':
    # 把slghack跑的结果复制到sql_urls.txt
    ssqli = slghack_sqli(urlsfile='sql_urls.txt')
    ssqli.get_urls()
    ssqli.sent_server()

这种批量扫描,比手工测试的效率肯定要高很多。

参考文章: https://www.freebuf.com/articles/web/204875.html


若有错误,欢迎指正!o( ̄▽ ̄)ブ

标签:Sqlmap,Google,scan,url,self,slghack,server,API,taskid
From: https://www.cnblogs.com/smileleooo/p/18134469

相关文章

  • 2、APIView执行流程以及request对象源码分析
    一、基于View编写5个接口1、创建模型表models.pyfromdjango.dbimportmodelsclassBook(models.Model):name=models.CharField(max_length=64)price=models.IntegerField()publish=models.CharField(max_length=32)2、视图函数views.pyfrom......
  • GRPC - Load testing Production-Grade APIs
      https://ghz.sh/  ......
  • 实验一-密码引擎-3-加密API研究
    密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接和代......
  • 密码引擎-加密API研究
    任务详细密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交......
  • 实验一-密码引擎-3-加密API
    实验一-密码引擎-3-加密API研究任务详情密码引擎API的主要标准和规范包括:微软的CryptoAPIRAS公司的PKCS#11标准中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出......
  • 实验一-密码引擎-3-加密API研究
    密码引擎API的主要标准和规范包括:微软的CryptoAPIRAS公司的PKCS#11标准中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客链接和代码链......
  • Web APIs
    0x01概述API是一些预先定义的函数,提供应用程序与开发人员基于某软件或硬件访问一组例程的能力WebAPIs是W3C组织的标准,是JS独有的部分WebAPI是浏览器提供的一套操作浏览器功能和页面元素的API,即DOM与BOM0x02DOM(1)简介文档对象模型(DocumentObjectModel)是......
  • TextIn合合信息的API使用心得
    在大学生服务外包杯的比赛中,我们组选了A29的赛题,是合合信息公司发布的赛题该赛题的意图是让我们使用它们公司开发的大模型api接口解决现实中的问题,在textin中的api接口中主要包含了以下几个方面的产品1.通用文字识别2.图像处理3.车辆相关识别4.国内票据识别等等我们组开发应用......
  • 密码引擎-3-加密API研究
    任务详情密码引擎API的主要标准和规范包括:1微软的CryptoAPI2RAS公司的PKCS#11标准3中国商用密码标准:GMT0016-2012智能密码钥匙密码应用接口规范,GMT0018-2012密码设备应用接口规范等研究以上API接口,总结他们的异同,并以龙脉GM3000Key为例,写出调用不同接口的代码,提交博客......
  • GRPC - Unit testing Production-Grade APIs
      ......