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 plain copy
 
  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 plain copy
 
  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框架,后期也會有這方面的分析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM