掃描器需要實現的功能思維導圖

爬蟲編寫思路
首先需要開發一個爬蟲用于收集網站的鏈接,爬蟲需要記錄已經爬取的鏈接和待爬取的鏈接,并且去重,用 Python 的set()就可以解決,大概流程是:
輸入 URL 下載解析出 URL URL 去重,判斷是否為本站 加入到待爬列表 重復循環SQL 判斷思路
通過在 URL 后面加上AND %d=%d或者OR NOT (%d>%d) %d后面的數字是隨機可變的 然后搜索網頁中特殊關鍵詞,比如:MySQL 中是 SQL syntax.*MySQL
Microsoft SQL Server 是 Warning.*mssql_
Microsoft Access 是 Microsoft Access Driver
Oracle 是 Oracle error
IBM DB2 是 DB2 SQL error
SQLite 是 SQLite.Exception
...
通過這些關鍵詞就可以判斷出所用的數據庫
請安裝這些庫
pip install requestspip install beautifulsoup4
實驗環境是 Linux,創建一個Code目錄,在其中創建一個work文件夾,將其作為工作目錄
目錄結構
/w8ay.py // 項目啟動主文件
/lib/core // 核心文件存放目錄
/lib/core/config.py // 配置文件
/script // 插件存放
/exp // exp和poc存放
步驟
SQL 檢測腳本編寫
DBMS_ERRORS = {  'MySQL': (r"SQL syntax.*MySQL", r"Warning.*mysql_.*", r"valid MySQL result", r"MySqlClient/."),  "PostgreSQL": (r"PostgreSQL.*ERROR", r"Warning.*/Wpg_.*", r"valid PostgreSQL result", r"Npgsql/."),  "Microsoft SQL Server": (r"Driver.* SQL[/-/_/ ]*Server", r"OLE DB.* SQL Server", r"(/W|/A)SQL Server.*Driver", r"Warning.*mssql_.*", r"(/W|/A)SQL Server.*[0-9a-fA-F]{8}", r"(?s)Exception.*/WSystem/.Data/.SqlClient/.", r"(?s)Exception.*/WRoadhouse/.Cms/."),  "Microsoft Access": (r"Microsoft Access Driver", r"JET Database Engine", r"Access Database Engine"),  "Oracle": (r"/bORA-[0-9][0-9][0-9][0-9]", r"Oracle error", r"Oracle.*Driver", r"Warning.*/Woci_.*", r"Warning.*/Wora_.*"),  "IBM DB2": (r"CLI Driver.*DB2", r"DB2 SQL error", r"/bdb2_/w+/("),  "SQLite": (r"SQLite/JDBCDriver", r"SQLite.Exception", r"System.Data.SQLite.SQLiteException", r"Warning.*sqlite_.*", r"Warning.*SQLite3::", r"/[SQLITE_ERROR/]"),  "Sybase": (r"(?i)Warning.*sybase.*", r"Sybase message", r"Sybase.*Server message.*"),}通過正則表達式就可以判斷出是哪個數據庫了
新聞熱點
疑難解答