ce安全网绿色资源分享

教程资讯|常用软件|安卓下载|下载排行|最近更新

软件
软件
文章
当前位置:首页网络安全网络安全工具 → Burpsuite结合SQLMap API批量SQL注入插件
Burpsuite结合SQLMap API批量SQL注入插件

Burpsuite结合SQLMap API批量SQL注入插件

评分:0.0
下载地址
  • 软件介绍
  • 软件截图
  • 同类推荐
  • 相关文章

软件Tags: [db:tag]

1.1变动:

增加过滤设置

优化显示结果

增加运行提示信息

增加域名正则匹配

整个插件分为三个面板:任务面板、sqlmapapi参数配置面板、过滤条件面板。

任务面板

Burpsuite结合SQLMap API批量SQL注入插件

Server : SQLmapapi服务的IP和端口
THREAD:同时检测的任务数量
Domain:需要检测的域名,支持正则匹配
CLEAN:清除任务缓存列表
TEST:测试SQLmapapi的连接是否成功
START:开启检测
左下为任务列表和任务状态,右侧按钮下方是信息提示区域,下方为请求详情和扫描结果。

sqlmapapi参数配置面板

Burpsuite结合SQLMap API批量SQL注入插件

这里的设置参考sqlmap的参数设置。
Tamper:列表中的是sqlmap自带的tamper,输入框中可填入自定义的tamper使用 ”,“逗号分割
LogFile:设置扫描日志记录文件,该文文件存储路径为sqlmapapi服务器上的路径。

过滤条件面板

ExcludeSuffix:用来排除一些指定后缀的请求,使用正则进行匹配。例如:图片、css、js等。
IngoreCase:对ExcludeSuffix进行限制是否区分大小写,默认为不区分。
IngoreParams:在对请求进行重复性检测时需要忽略的参数,使用”,“逗号分割,例如:请求中的随机数timeStamp等。
ExcludeParams:在对请求进行过滤时如果存在该参数则不将该请求加入待测列表,例如:验证码checkCode等。
以上是根据这段时间在实际使用的过程中所做的一些修改,后续还会根据大家的建议进一步对该插件进行优化,谢谢大家的支持。

以下是程序中的一些代码以及实现思路:

请求监听段实现代码

 
  1. public void processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo) {
  2.         boolean addFlag = false;// 是否添加到扫描列表
  3.         // 判断是否为request请求、开关是否打开
  4.         if (messageIsRequest && sqlmapApiPanel.isStart()) {
  5.             String host = helpers.analyzeRequest(messageInfo).getUrl().getHost();
  6.             if (host.matches(targetDomian)) {
  7.                 IRequestInfo iRequestInfo = helpers.analyzeRequest(messageInfo);
  8.                 // 从?号处截断URL 可区分http 和 https
  9.                 String url = String.valueOf(iRequestInfo.getUrl());
  10.                 url = url.indexOf("?") > 0 ? url.substring(0, url.indexOf("?")) : url;
  11.                 // 排除指定后缀URL(eg : .jpg|.png|.ico)
  12.                 if (!excludeSuffix.matcher(url).matches()) {
  13.                     // 构造任务实体
  14.                     TaskEntity entity = new TaskEntity(iRequestInfo.getUrl(), //
  15.                             iRequestInfo.getMethod(), //
  16.                             callbacks.saveBuffersToTempFiles(messageInfo), //
  17.                             iRequestInfo);
  18.                     // 进行数据去重检测
  19.                     String hash = bCrypt.hashpw(entity.getSignString(-1, ingoreParams), SALT);
  20.                     Integer repeatCheckValue = 1;
  21.                     if (String.valueOf(iRequestInfo.getHeaders()).indexOf("Chris-To-Sqlmap") != -1) {
  22.                         if (repeatCheck.containsKey(hash)) {
  23.                             repeatCheckValue = repeatCheck.get(hash) + 1;
  24.                             hash = hash + repeatCheckValue;
  25.                         }
  26.                         addFlag = true;
  27.                     }
  28.                     // 检测当前数据包是否重复,检测当前数据包是否要根据参数可选过滤
  29.                     else if (!repeatCheck.containsKey(hash) && !entity.hasParams(excludeParams)) {
  30.                         // repeatCheck
  31.                         if (!entity.getParamBody().isEmpty()) {// 检测post参数是否为空
  32.                             addFlag = true;
  33.                         } else if (!entity.getParamUrl().isEmpty()) {// 检测get参数是否为空
  34.                             addFlag = true;
  35.                         } else if (sqlmapApiOption.getLevel() >= 3 && !entity.getParamCookie().isEmpty()) {// level参数大于3是应检测cookie注入
  36.                             addFlag = true;
  37.                         }
  38.                     }
  39.                     if (addFlag) {
  40.                         int row = listTasks.size();
  41.                         repeatCheck.put(hash, repeatCheckValue);
  42.                         listTasks.add(entity);
  43.                         fireTableRowsInserted(row, listTasks.size());
  44.                     }
  45.                 }
  46.             }
  47.         }
  48.     }

任务执行段实现代码:

 
  1. public void run() {
  2.                 while (true) {
  3.                     if (!threadFlag) {
  4.                         try {
  5.                             sqlmapApiPanel.setMessage("Waiting.");
  6.                             sleep(3 * 1000);
  7.                         } catch (InterruptedException e) {
  8.                             stderr.print(e.getMessage());
  9.                         }
  10.                         continue;
  11.                     }
  12.                     // 增加任务
  13.                     if (runingTasks.size() < THREAD_NUMBER && listTasks_start < listTasks.size()) {
  14.                         while (runingTasks.size() < THREAD_NUMBER && listTasks_start < listTasks.size()) {
  15.                             TaskEntity entityNew = listTasks.get(listTasks_start);
  16.                             entityNew.setTaskid(sqlmapapi.tastNew(sqlmapapiServer));
  17.                             if (entityNew.getTaskid() != "" && entityNew.getTaskid() != "-") {
  18.                                 entityNew.setTaskEngineid(sqlmapapi.taskStart(sqlmapapiServer, entityNew, sqlmapApiOption));
  19.                                 runingTasks.put(entityNew.getTaskid(), entityNew);
  20.                                 sqlmapApiPanel.setMessage("New task "+entityNew.getTaskid()+" , URL :"+String.valueOf(entityNew.getUrl())+"    .");
  21.                                 listTasks_start++;
  22.                             } else {
  23.                                 try {
  24.                                     sqlmapApiPanel.setMessage("New task failed! URL :"+String.valueOf(entityNew.getUrl())+"    .");
  25.                                     sleep(3 * 1000);
  26.                                 } catch (InterruptedException e) {
  27.                                     stderr.print(e.getMessage());
  28.                                 }
  29.                                 continue;
  30.                             }
  31.                         }
  32.                     }
  33.                     if (runingTasks.size() != 0) {
  34.                         // 刷新map中任务的状态
  35.                         List<String> removeList = new ArrayList<>();
  36.                         for (String key : runingTasks.keySet()) {
  37.                             TaskEntity entityRuning = runingTasks.get(key);
  38.                             String status = sqlmapapi.flushStatus(sqlmapapiServer, entityRuning);
  39.                             sqlmapApiPanel.setMessage("Flash task [" + key + "] " + status + " .");
  40.                             if ("terminated".equals(status)) {
  41.                                 entityRuning.setTaskStatus(status);
  42.                                 entityRuning.setTaskScanData(sqlmapapi.flushScanData(sqlmapapiServer, entityRuning));
  43.                                 sqlmapApiPanel.setMessage("Task [" + key + "] finished .");
  44.                                 removeList.add(key);
  45.                             } else if ("not running".equals(status)) {
  46.                                 stderr.println(entityRuning.getTaskid() + " not running");
  47.                                 // entityRuning.setTaskEngineid(taskStart(entityRuning));
  48.                             } else {
  49.                                 entityRuning.setTaskStatus(status);
  50.                             }
  51.                             try {
  52.                                 sleep(3 * 1000);
  53.                             } catch (InterruptedException e) {
  54.                                 stderr.print(e.getMessage());
  55.                             }
  56.                         }
  57.                         if (!removeList.isEmpty()) {
  58.                             for (String key : removeList) {
  59.                                 runingTasks.remove(key);
  60.                             }
  61.                         }
  62.                         fireTableRowsInserted(0, listTasks.size());
  63.                     } else {
  64.                         try {
  65.                             sleep(3 * 1000);
  66.                         } catch (InterruptedException e) {
  67.                             stderr.print(e.getMessage());
  68.                         }
  69.                     }
  70.                 }
  71.             }

插件下载

请到网盘下载处下载
展开内容

软件截图

下载地址

  • PC版

推荐文章

用户评论

验证码:

请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!

最新评论

已有人参与,点击查看更多精彩评论

关于CE安全网 | 联系方式 | 发展历程 | 版权声明 | 下载帮助(?) | 广告联系 | 网站地图 | 友情链接

Copyright 2019-2029 cesafe.com 【CE安全网】 版权所有 蜀ICP备19039426号-2| 蜀ICP备19039426号-2

声明: 本站为非赢利性网站 不接受任何赞助和广告 所有软件和文章来自互联网 如有异议 请与本站联系 技术支持:ce安全网