流程圖
首先需要爬行該網站,獲取到網站鏈接,然後再對這些鏈接進行檢測,最後結果保存在本地。
工程設計
爬行鏈接
慚愧,並沒有用詳細的正則表達式專門提取鏈接。使用的是尋找Href的值,然後剖去http與javascript。將爬行的結果保存在列表,因爲可能一次性可能爬很多的鏈接,沒有必要檢測這麼多的鏈接,所以最後做了一些篩選,只隨機選擇5個鏈接進行檢測。
r_sql = re.findall('href="(.*?)"', r_crawl.content)
list_none = []
for sql_sql in r_sql:
if 'php?' in sql_sql:
if not 'http' in sql_sql and not 'jsvascript' in sql_sql:
list_none.append(url + '/' + sql_sql.lstrip('/'))
else:
pass
else:
pass
同理把php換成asp,aspx等就能爬行asp,aspx的鏈接。
驗證注入
思路是加上一些讓能讓數據庫報錯的東西,比如單引號,and1=2這樣的。然後在鏈接上加上這些payloads,根據返回的頁面是否有數據庫報錯語句。