sql注入線上檢測(sqlmapapi),sqlsqlmapapi
之前一搞滲透的同事問我,sqlmapapi.py是幹啥的,我猜很多人都玩過sqlmap,但玩過sqlmapapi的應該比較少,今天就和大家一起看看如何使用以及一些美的地方。
說白了,sqlmapapi.py就是提供了一個檢查sql注入的介面,我們可以直接通過發送http請求掃描sql注入,擷取掃描結果等一系列操作。
下面通過執行個體示範如何使用:
一.啟動伺服器端
伺服器後端使用的是bottle,一個Python Web微架構。
二. 我們使用requests這個庫發送請求
1.建立任務
2.發送掃描選項,開啟掃描
注意:那個cd92e4e99406715b就是建立任務返回的taskid
3.查看掃描狀態
任務已經結束,可以擷取掃描結果了
4.查看掃描結果
我們很明顯的看出是存在sql注入的
嘿嘿,是不是很簡單,但很強大啊,其實如果深入源碼查看,你會發現也很簡單。
比如說啟動一個任務,
def engine_start(self): self.process = Popen("python sqlmap.py --pickled-options %s" % base64pickle(self.options), shell=True, stdin=PIPE, close_fds=False)其它的也是一目瞭然,
def engine_stop(self): if self.process: return self.process.terminate() else: return None def engine_kill(self): if self.process: return self.process.kill() else: return None def engine_get_returncode(self): if self.process: self.process.poll() return self.process.returncode else: return None def engine_has_terminated(self): #如何任務沒有結束,returncode的傳回值為None 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注入點檢測
啊d注入工具,就不錯,老是老了點,但是好用。 1=1 2=2是基本的手工檢測方法。兩年前我也有好幾百個webshell的。不過現在不玩了。
怎檢查sql注入問題
SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入欄位名或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的SQL命令!查漏洞可以去百度裡打iiscan,登入億思官網,裡面有免費的網站安全檢測,可以查漏洞的!!!