使用sqlmapapi.py批量化扫描实践

华盟原创文章投稿奖励计划

  0x00 前言

  sqlmap可谓是sql注入探测的神器,优秀的探测功能可以让任何一个使用者无基础挖掘sql注入。wooyun上关于sqlmap的文章已经有6篇了,都没有科 普sqlmapapi.py。因此我打算分享下这方面的实践。利用sqlmap测试SQL注入的效率很低,每一个url都需要手动测试,这样肯定不是理想状态。 sqlmap的作者肯定也察觉到这一点了,默默的开发了sqlmapapi.py,当你使用了sqlmapapi.py后才能体会到sqlmap的强大。 sqlmap构建了一个自动化 分布式的扫描帝国!这篇文章我主要从sqlmapapi.py的代码角度和AutoSqli类的设计与实现的角度展开。

  0x01 sqlmapapi.py综述

  sqlmapapi.py给使用者提供了一个强大的功能,服务功能。使用者可以利用sqlmapapi.py开启服务端口,以后只要向sqlmapapi发送请求,就可以进行sql注入,然后发送查询请求,就可以得到这个url是否是注入点,以及详细的内容。同学们看到这里是不是有些小激动呢? sqlmapapi.py的help,我们需要用的是-s参数,也许你也有可能用到-p参数。

  

使用sqlmapapi.py批量化扫描实践

  从sqlmapapi.py文件可以看出来,我们利用的文件的调用关系是

  

使用sqlmapapi.py批量化扫描实践

  进入到lib/utils/api.py的server类,可以发现通过向server提交数据进行与服务的交互。 一共分为3种类型。

  Users' methods 用户方法

  Admin function 管理函数

  sqlmap core interact functions 核心交互函数

  可以提交数据的种类如下。

  用户方法

  

以下是代码片段:
@get("/task/new")
  @get("/task//delete")

  管理函数

  

以下是代码片段:
@get("/admin//list")
  @get("/admin//flush")

  核心交互函数

  

以下是代码片段:
@get("/option//list")
  @post("/option//get")
  @post("/option//set")
  @post("/scan//start")
  @get("/scan//stop")
  @get("/scan//kill")
  @get("/scan//status")
  @get("/scan//data")
  @get("/scan//log//")
  @get("/scan//log")
  @get("/download///")

  不难发现这些操作可以完全满足我们的测试需求,因此利用这些就可以批量了。当然每一种请求都会有不同的返回值,这些返回值是json的形式传回, 解析就好了。其实这些我已经替大家做好了,调用AutoSqli类就可以了,但是还是要挑一些讲下。

  task/new 任务建立

以下是代码片段:

GET/task/newResponse:

原文地址:https://hack.77169.com/201512/218908.shtm

本文原创,作者:华盟君,其版权均为华盟网所有。如需转载,请注明出处:https://www.77169.net/html/19644.html

发表评论