利用sqlmapapi和google-hacking联动自动化sql注入探测
利用inurl语法搜索+sqlmap梭哈挖到过一点sql注入,这不失为一种好方法。
但是现在的sql注入漏洞的网站是比较少的了,所以这样一个个手工测,不仅效率低,还不一定有什么收获。不妨写一个google-hacking+sqlmap联动的自动化脚本批量挖洞。
为此写了一个小的python爬虫脚本,目的是可以利用google-hacking搜索然后再从google浏览器页面自动批量爬取这些我们想要的url。
待测的目标url都准备好了,接下来就是如何优雅地利用sqlmap实现快速高效探测。这里可能会想到sqlmap的-m选项,它读取多个目标url快速扫描,然而在sqlmap项目的根目录下面有个sqlmapapi.py,可能很少有人注意到。
sqlmapapi.py是sqlmap提供的一个API接口,它允许用户通过编程方式调用sqlmap的功能。可以利用sqlmapapi.py开启服务端口,然后向sqlmapapi发送请求,就可以进行快速稳定的sql注入探测。
使用方法也很简单python sqlmapapi.py -s
命令可在本地的8775端口开启一个sqlmapapi的服务,也可以通过-p
指定端口。
没有找到关于sqlmapapi官方的API文档,只有一些第三方的文档可以参考:Unofficial SQLmap RESTful API documentation
基于HTTP协议的接口模式,可以通过HTTP请求与sqlmapapi.py进行交互,以下是一些可用的API端点:
sqlmapapi的主要工作流程:
GET请求
/task/new
创建一个新的扫描任务POST请求
/scan/<taskid>/start
并通过json格式提交参数,开始一个扫描任务GET请求
/scan/<taskid>/status
来获取指定的taskid的扫描状态(run/terminated)GET请求
/scan/<taskid>/data
获取扫描结果
知道了这些就可以通过requests来模拟相应的api请求,以此来执行扫描任务了。
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:
r = requests.get(f"{self.server}/task/new")
taskid = r.json()['taskid']
r = requests.post(
f"{self.server}/scan/{taskid}/start",
data=json.dumps({'url': url}), headers={'content-type': 'application/json'}
)
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__':
ssqli = slghack_sqli(urlsfile='sql_urls.txt')
ssqli.get_urls()
ssqli.sent_server()
这种批量扫描探测,肯定是要比手工测的效率要高出不少的。
it works, nice!
若有错误,欢迎指正!o( ̄▽ ̄)ブ
利用sqlmapapi和google-hacking联动自动化sql注入探测的更多相关文章
- 自动化SQL注入工具 sqlmap 使用手册
0x00 sqlmap介绍 什么是sqlmap? sqlmap是一个开源的渗透测试工具,它自动化了检测和利用SQL注入缺陷 以及接管数据库服务器的过程.它配备了一个强大的检测引擎 ,以及终极渗透测试仪 ...
- SQL注入技术专题—由浅入深【精华聚合】
作者:坏蛋链接:https://zhuanlan.zhihu.com/p/23569276来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 不管用什么语言编写的Web应用 ...
- SQL注入学习资料总结
转载自:https://bbs.ichunqiu.com/thread-12105-1-1.html 什么是SQL注入 SQL注入基本介绍 结构化查询语言(Structured Query Lang ...
- Oracle学习总结(6)—— SQL注入技术
不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动.在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一. SQL注入基 ...
- sql注入搞事情(连载一)
SQL注入搞事情(连载一) 概述 写在最前面 为了有个合理的训练计划,山人准备长期开放自己的训练计划以及内容以供大家参考.山人专业是信息对抗技术,不是web方向的博客保证句句手打,如有问题请及时小窗. ...
- 十大关系数据库SQL注入工具一览
摘要:众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL工具可帮助管理员及时检测存在的漏洞. BSQL Hacker ...
- 【web安全】第六弹:手工SQL注入详解
前一段时间,在对SQL注入有了新的理解之后,写了这篇文章.本来准备投稿,因为内容过于基础被打回来了,想想屯着也没意思,发出来发出来~~本来有好多图的,但是博客园发图很麻烦,word文档的链接会贴在文章 ...
- 10个SQL注入工具(转载)
众所周知,SQL注入攻击是最为常见的Web应用程序攻击技术.同时SQL注入攻击所带来的安全破坏也是不可弥补的.以下罗列的10款SQL注入工具可帮助管理员及时检测存在的漏洞. BSQL Hacker 1 ...
- SQL注入(二)
5.限制输入长度 如果在Web页面上使用文本框收集用户输入的数据,使用文本框的MaxLength属性来限制用户输入过长的字符也是一个很好的方法,因为用户的输入不够长,也就减少了贴入大量脚本的可能性.程 ...
- 10 个 SQL 注入工具
BSQL Hacker BSQL Hacker是由Portcullis实验室开发的,BSQL Hacker 是一个SQL自动注入工具(支持SQL盲注),其设计的目的是希望能对任何的数据库进行SQL溢出 ...
随机推荐
- 搜索引擎用法 cheatsheet
逻辑 写法 与 keyword1 keyword2 或 keyword1 OR keyword2 限定关键词的排列 "keyword" 限定搜索的网站 site:cnblogs.c ...
- MySQL的索引原理及使用
MySQL中的索引模型 Mysql中的索引使用的数据结构一般为搜索树,这里的搜索树,一般使用B树,这里补一下数据结构中的B树结构:说B树之前,先顺一个前置的知识点,平衡二叉树: 平衡二叉树 二叉树应该 ...
- C#设计模式入门实战教程
什么是设计模式 设计模式是对面向对象设计中反复出现的问题的解决方案.它们提供了被反复使用.多数人知晓的.经过分类编目的代码设计经验总结. 设计模式的作用 提高代码的可重用性:通过定义一套标准的解决方案 ...
- MVCC能否解决幻读?
一.什么是MVCC 多版本控制: 指的是一种提高并发的技术.最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞.引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提 ...
- HttpURLConnection和HttpClient使用
HttpURLConnection 这是Java的标准类,继承自URLConnection,可用于向指定网站发送GET/POST请求. 方法描述 void setRequestMethod(Strin ...
- PasteForm最佳CRUD实践,实际案例PasteTemplate详解之管理前端的代码(二)
之前的文章说了,使用反射和ABPvNext的Dto实现用后端控制前端以实现最佳CRUD实践! 相信看过一的已经了解了这个PasteForm是如何实现的了,本文来看下具体如何实现的 表格页面的实现 打开 ...
- AD域下,域管理员网络无法正常连接
排错思路:1.是否拥有上网权限, test 超级管理员自然是有上网权限的(该项排除): 2.浏览器是否使用了代理 ,有些软件在安装的时候,会自动启用浏览器的代理,开启某些特定的端口: 3.其他原因 解 ...
- 【赵渝强老师】Redis的慢查询日志
Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作.慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息 ...
- 高通ADSP USB流程
在高通平台上,ADSP(Audio Digital Signal Processor,音频数字信号处理器)可以通过 USB 接口与主机进行数据传输,以下是大致的 ADSP USB 流程: 主机发起 U ...
- 2023年3月中国数据库行业分析报告正式发布,带你了解NL2SQL技术原理
为了帮助大家及时了解中国数据库行业发展现状.梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新<中国数据库行业分析报告>,持 ...