• sql注入在线检测(sqlmapapi)


    版权: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注入的

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

    比如说启动一个任务,

    [python] view plaincopy
     
    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)  

    其它的也是一目了然,

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


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

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

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

  • 相关阅读:
    文件夹生成zip
    html 字符串 生成 pdf 完美解决中文不显示
    layui 数据表格+分页+搜索+checkbox+缓存选中项数据
    排序算法总结
    排序算法(10)--Distribution Sorting--分布排序[2]--Radix Sort--基数排序
    排序算法(8)--Merge Sorting--归并排序--Merge sort--归并排序
    [Android]在Dagger 2中使用RxJava来进行异步注入(翻译)
    [Android]使用Dagger 2进行依赖注入
    [Android]Android端ORM框架——RapidORM(v2.1)
    [Android]使用MVP解决技术债务(翻译)
  • 原文地址:https://www.cnblogs.com/sevck/p/4945780.html
Copyright © 2020-2023  润新知