版权:http://blog.csdn.net/yueguanghaidao/article/details/38026431

每次看都不方便   摘抄下来

之前一搞渗透的同事问我,sqlmapapi.py是干啥的,我猜很多人都玩过sqlmap,但玩过sqlmapapi的应该比较少,今天就和大家一起看看如何使用以及一些美的地方。

说白了,sqlmapapi.py就是提供了一个检查sql注入的接口,我们可以直接通过发送http请求扫描sql注入,获取扫描结果等一系列操作。

下面通过实例演示如何使用:

一.启动服务器端

服务器后端使用的是bottle,一个Python Web微框架。

二. 我们使用requests这个库发送请求

1.新建任务

2.发送扫描选项,开启扫描

注意:那个cd92e4e99406715b就是新建任务返回的taskid

3.查看扫描状态

任务已经结束,可以获取扫描结果了

4.查看扫描结果

我们很明显的看出是存在sql注入的

嘿嘿,是不是很简单,但很强大啊,其实如果深入源码查看,你会发现也很简单。

比如说启动一个任务,

  1. def engine_start(self):
  2. self.process = Popen("python sqlmap.py --pickled-options %s" % base64pickle(self.options),
  3. shell=True, stdin=PIPE, close_fds=False)

其它的也是一目了然,

  1. def engine_stop(self):
  2. if self.process:
  3. return self.process.terminate()
  4. else:
  5. return None
  6. def engine_kill(self):
  7. if self.process:
  8. return self.process.kill()
  9. else:
  10. return None
  11. def engine_get_returncode(self):
  12. if self.process:
  13. self.process.poll()
  14. return self.process.returncode
  15. else:
  16. return None
  17. def engine_has_terminated(self):
  18. #如何任务没有结束,returncode的返回值为None
  19. return isinstance(self.engine_get_returncode(), int)

我们restful api设计也是很有讲究的,一般少用动词,而是通过http的方法代表动作。比如说获取状态,并不是getstatus,而是通过get方法,和status名称就很贴切。

但有时动词是不可避免的,如何说start,stop等。其实看看新建任务的api设计作者肯定也很纠结,本来如果新建任务有参数的话,直接post方法就可以,压根不需要new这个动词。但由于新建任务不需要任何参数,使用post方法也不太恰当,所以改为get方法了。这也符合上面开启任务使用post,而停止任务使用的是get。

更多细节问题需要大家去看文档或源码,刚好趁着这个机会好好分析下subprocess模块和bottle框架,后期也会有这方面的分析。

sql注入在线检测(sqlmapapi)的更多相关文章

  1. sql注入在线检測(sqlmapapi)

    之前一搞渗透的同事问我.sqlmapapi.py是干啥的,我猜非常多人都玩过sqlmap,但玩过sqlmapapi的应该比較少,今天就和大家一起看看怎样使用以及一些美的地方. 说白了.sqlmapap ...

  2. [初学Python]编写一个最简单判断SQL注入的检测工具

    0x01 背景 15年那会,几乎可以说是渗透最火的一年,各种教程各种文章,本人也是有幸在那几年学到了一些皮毛,中间因学业问题将其荒废至今.当初最早学的便是,and 1=1 和 and 1=2 这最简单 ...

  3. 在SQL注入中利用MySQL隐形的类型转换绕过WAF检测

    web应用一般采用基于表单的身份验证方式(页面雏形如下图所示),处理逻辑就是将表单中提交的用户名和密码传递到后台数据库去查询,并根据查询结果判断是否通过身份验证.对于LAMP架构的web应用而言,处理 ...

  4. 20.Ecshop 2.x/3.x SQL注入/任意代码执行漏洞

    Ecshop 2.x/3.x SQL注入/任意代码执行漏洞 影响版本: Ecshop 2.x Ecshop 3.x-3.6.0 漏洞分析: 该漏洞影响ECShop 2.x和3.x版本,是一个典型的“二 ...

  5. MySQL SQL 注入

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本博文将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是 ...

  6. mysql sql注入

    防止SQL注入,我们需要注意以下几个要点: 1.永远不要信任用户的输入.对用户的输入进行校验,可以通过正则表达式,或限制长度:对单引号和 双"-"进行转换等. 2.永远不要使用动态 ...

  7. MySQL 及 SQL 注入

    如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题. 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符. 所谓SQL注入,就是 ...

  8. 通过 HTTP 头进行 SQL 注入

    在漏洞评估和渗透测试中,确定目标应用程序的输入向量是第一步.有时,当做web应用程序测试时,SQL注入漏洞的测试用例通常局限于特殊的输入向量GET和POST变量.那么对于其他的HTTP头部参数呢?难道 ...

  9. 通过 HTTP 头进行 SQL 注入(转)

    英文原文:DatabaseTube,翻译:开源中国 在漏洞评估和渗透测试中,确定目标应用程序的输入向量是第一步.这篇文章解释了别人是如何通过HTTP头部对你的数据库进行SQL注入攻击的,以及讨论下选择 ...

随机推荐

  1. Atom 和 Sublime Text 相比哪个好?

    好像截止到今天还分不出来,Sublime确实会快一点.

  2. laravel运行url404错误

    url输入正确的根目录时老是提示404错误,竟然不知道为什么,稀里糊涂的,最后发现输入url时后面默认会加上一个\,一定记得把\去掉!!!!

  3. 错误代码:ERR_UNSAFE_PORT

    修改下应用的端口为7788就好了:http://localhost:7788/taiping-sol-insu-vehicle/vehicleEntrance.action. 这个主要是chrome的 ...

  4. Hibernate,JPA注解@Version

    Hibernate实现悲观锁和乐观锁. 1,悲观锁 用例代码如下: 数据库DDL语句: hibernate.cfg.xml java类 以上代码(除下面的main之外)同乐观锁. main packa ...

  5. 对Discuz的简单认识

    Discuz是php的一个开源论坛系统,是由康盛创想公司2004开发,从Discuz! 1.0到 现在的Discuz X3,无论从功能上还是从用户体验上,都达到了一个质的飞越.主要包括论坛.门户.群组 ...

  6. 完整学习git二 git 暂存区

    1 git log 命令查看提交日志信息 git log --pretty-fuller #详细查看 git log --stat #查看每次提交的文件变更 git log --pretty-onli ...

  7. DelegateCommand.cs

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  8. Radar Installation 分类: POJ 2015-06-15 19:54 8人阅读 评论(0) 收藏

    Radar Installation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60120   Accepted: 13 ...

  9. 算法大全(c,c++)

    http://www.2cto.com/kf/201109/105758.html 算法大全(C,C++)一. 数论算法 1.求两数的最大公约数function gcd(a,b:integer):in ...

  10. inux awk命令详解

    http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编 ...