专栏首页Gcow安全团队SQLMAPAPI-一个被遗忘的API接口《第一章:初识SQLMAP API和命令行中调用》

SQLMAPAPI-一个被遗忘的API接口《第一章:初识SQLMAP API和命令行中调用》

“本文前言:

最近在写一款漏洞检测软件的时候,发现对于SQL注入的一些判断还有测试不是很精准,于是乎我就想到了本文的一个主角,SQLMAPAPI,这个API是SQLMAP官方提供的一个调用SQLMAP里面服务的一个API,以前觉得SQLMAP自己玩得挺好的了,但是当我接触了SQLMAP API后发现自己还是太年轻了。同时国内对于SQLMAP的API的一些记录不是很多或者很细,于是乎就有了这篇文章,来总结和记录一个过程。同时写的不好的话还望大佬们手下留情!(P.S. 本文为了方便理解很多东西都是用大白话去讲解的,还望各位大佬们海涵)”

本文目录:

1.对SQLMAP API的一个介绍

2. sqlmapapi.py的使用帮助

3. SQLMAP API的两种模式

01

对SQLMAP API的一个介绍

P.S. 介绍废话有点多各位可以酌情看

为什么要使用SQLMAP API?

有的读者就要问了,我们的-m不是可以批量检测吗?为什么还要来调用SQLMAP API呢?虽然-m参数可以批量扫描URL,但是他的一个运行方式是一个扫描完成后再开始下一个任务。但是我们通过api接口,直接下发扫描任务后台就可以直接静默开始运行,无需开启一个新的命令行窗口。这样的话对于我们进行大量测试的时候就可以批量去提交任务了。这样的话对我们的工作就可以起到很大的一个辅助。同时对于一些国外的站点的话我们在进行一些测试的时候就可以把我们的API放在我们的VPS上,这样的话就可以直接来加快我们的测试。

02

详细对SQLMAP API的真容进行一探究竟

1.环境与搭建:

我们只需要下载完成Python2.7和安装配置后,再下载我们的SQLMAP里面就直接自带了API。

附上一些下载地址:

最新的Python 2.7.x 下载地址:

https://www.python.org/downloads/release/python-2718/

SQLMAP 下载地址:

https://github.com/sqlmapproject/sqlmap/zipball/master

2.SQLMAP API的真容

那说了那么多,到底api如何使用呢?在下载安装SQLMAP后,你会在sqlmap安装目录中找到一个 sqlmapapi.py 的文件,这个 sqlmapapi.py 文件就是sqlmmap api。我们的SQLMAP API就静静的在这里,你看着他,他也在看着你。

同时我们的sqlmap api分为服务端和客户端,sqlmap api有两种模式,一种是基于HTTP协议的接口模式,一种是基于命令行的接口模式。

我们下面可以来看看SQLMAP API官方的一些帮助:

这里我们来看看每一个参数详细的一个介绍

Usage: sqlmapapi.py [options]
Options: -h, --help 显示帮助信息并退出 
-s, --server 作为api服务端运行 
-c, --client 作为api客户端运行 
-H HOST, --host=HOST 指定服务端IP地址 (默认IP是 "127.0.0.1")
-p PORT, --port=PORT 指定服务端端口 (默认端口8775)
--adapter=ADAPTER #服务端标准接口 (默认是"wsgiref")
--username=USERNAME #可空,设置用户名 
--password=PASSWORD #可空,设置密码

3.启动API服务

1. 服务端模式:

无论是基于HTTP协议的接口模式还是基于命令行的接口模式,首先都是需要开启api服务端的。通过输入以下命令即可开启api服务端:

python sqlmapapi.py -s

命令执行成功后我们的返回信息如下:

其他的一些信息就是IPC数据库的位置,api服务端已经和IPC数据库连接上了,正在使用bottle 框架wsgiref标准接口。这里呢我们就不过多的去解释了

但是通过上面的这种方式开启api服务端有一个缺点,当服务端和客户端不是一台主机会连接不上,这个只是针对于我们本地调用的时候使用的,因此如果要解决这个问题,可以通过输入以下命令来开启api服务端。

python sqlmapapi.py-s-H "0.0.0.0" -p 8775

这样的话就可以直接指定创建一个开放的地址和端口了。

2.客户端模式(命令行接口模式):

有的时候我们只是需要调用,而不需要我们的程序调用的时候,就可以直接用我们的客户端模式来进行连接(P.S. 我们的API服务还是要开启)

然后通过下面代码就可以连接到我们的SQLMAP API了

python sqlmapapi.py -c -H(必须大写,小写的是帮助) 地址 -p 端口

这样的话我们就进入了我们的命令行。

同时我们可以执行的命令有这些:

help显示帮助信息 
new ARGS[我们的一些参数等等] 开启一个新的扫描任务
use TASKID 切换taskid
data获取当前任务返回的数据
log获取当前任务的扫描日志
status获取当前任务的扫描状态
option OPTION 获取当前任务的选项
options 获取当前任务的所有配置信息
stop停止当前任务 
kill杀死当前任务 
list显示所有任务列表
flush清空所有任务 
exit退出客户端

之后我们可以用

[例如:new-u “url”]这样就可以直接开始扫描新的任务

我们就可以通过这个来进行创建我们的新的任务(如下图)

并且已经切换到了我们的这个任务的ID.

(P.S. 我们的每一个任务只能是一个单独测试点,每个任务对应一个ID)

创建成功后就会这样,之后我们可以通过输入status来获取当前的一个运行情况

这个就是我们的状态

我们的状态分为

running 正在扫描(running的一个截图)

terminated 扫描完成

(P.S. SQLMAP API扫描完成后,不会进行主动推送完成信息)

(上图是在我们扫描不存在注入的时候的截图)

我们的returncode如果返回的是0,那么我们的注入就是成功的。我们可以输入data来获取我们的详细的信息。

返回的数据都是JSON格式的数据

里面的信息都十分的详细包括了 注入类型 数据库类型 注入的存在点等等

到这里就是我们这个命令行接口模式的一个使用了,同时我们如果细心一点就可以发现。

我们的每一步,其实都是调用了http的对应的接口的。那么我们就可以通过HTTP接口来让其他的程序也可也调用我们们的SQLMAP API来进行注入的测试。

同时我们的api接口都是静默运行的只会有部分的调用信息在我们的命令框中

这里如果我们执行了多任务的话list可以来进行查看我们的所有当前的执行任务

我们可以用:use + taskid #来进行切换任务的切换

以上就是我们对于命令行模式中的一些使用了,其他的命令呢,各位有兴趣都可以自己去测试一下。这一篇呢也就到这里就结束了,之后下一篇我会更新基于HTTP协议的调用方式和对SQLMAP API的代码去进行分析。

本文分享自微信公众号 - Gcow安全团队(Gcow666)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PDF文件密码破解

    今天在整理文档的时候发现,有几个随机数字命名的加密pdf文件,回想了一下相关情况,好像密码是6位以内的数字加字母。正好记录一下使用hashcat和john爆破P...

    Gcow安全团队
  • CVE-2017-0261及利用样本分析

    3.文中提及的方法仅供参考学习,若用在实际情况而造成的损失,本团队以及本公众号概不负责

    Gcow安全团队
  • 记一次在VulnStack ATT&CK 5靶场中使用CobaltStrike的渗透之旅

    为了不让各位产生混淆,在这里先进行提前的声明: 1.文中所用的cs部署于kali之上 2.kali(192.168.1.119)与win7的其中一个网卡(192...

    Gcow安全团队
  • ELK Stack系列之基础篇(九) - Elasticsearch的交互方式

    前面的章节中,我们花费了很多时间去讲ELK的框架、ELK每个组成部分的构成原理、ES专有名词的解释、以及如何快速搭建一个集群,那么在接下来很长一部分时间...

    南非骆驼漫谈ELK Stack
  • 再谈 API 的撰写 - 契约

    现代社会是个契约社会,生活中大大小小的事情都在和契约打交道。去奥莱买件衣服,一纸小票,便是你跟商家的契约:你花钱买到了产品,产品的问题商家会承诺处理(退换货)。...

    tyrchen
  • 分布式链路追踪 SkyWalking 源码分析 —— 应用于应用实例的注册

    我们先来看看 API 的定义,ApplicationRegisterService.proto ,如下图所示:

    芋道源码
  • 50种机器学习和人脸识别API,收藏好!以后开发不用找啦

    API 是一套用于构建软件程序的协议和工具。对于应用开发者而言,有了开放的 API,就可以直接调用其他公司做好的功能为我所用,这在很大程度上提升了工作效率。本文...

    BestSDK
  • 50种机器学习和预测应用的API,你想要的全都有

    API 是一套用于构建软件程序的协议和工具。对于应用开发者而言,有了开放的 API,就可以直接调用其他公司做好的功能为我所用,这在很大程度上提升了工作效率。

    IT派
  • 50种机器学习和预测应用的API,你想要的全都有

    用户1737318
  • 思考,问题和方法

    转眼已是七月。距我上次更新公众号,已经一月有余。离我加入 Arcblock,也有两月。如果把人看做一个运行的软件,那么这两个月我已经迭代好几轮,就像龙珠里在飞往...

    tyrchen

扫码关注云+社区

领取腾讯云代金券