python sql注入扫描器编写_Python实现SQL注入检测插件实例代码

扫描器需要实现的功能思维导图

爬虫编写思路

首先需要开发一个爬虫用于收集网站的链接,爬虫需要记录已经爬取的链接和待爬取的链接,并且去重,用 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

...

通过这些关键词就可以判断出所用的数据库

还需要判断一下 waf 之类的东西,有这种东西就直接停止。简单的方法就是用特定的 URL 访问,如果出现了像IP banned,fierwall之类的关键词,可以判断出是waf。具体的正则表达式是(?i)(A|b)IPb.*b(banned|blocked|bl(a|o)cks?list|firewall)

开发准备展开目录

请安装这些库

pip install requests

pip 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.*"),

}

通过正则表达式就可以判断出是哪个数据库了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值