Web安全测试(三):SQL注入漏洞

一、前言

结合内部资料,与安全渗透部门同事合力整理的安全测试相关资料教程,全方位涵盖电商、支付、金融、网络、数据库等领域的安全测试,覆盖Web、APP、中间件、内外网、Linux、Windows多个平台。学完后一定能成为安全大佬!
全部文章请访问专栏:《全栈安全测试教程(0基础)》


文章目录

    • 一、前言
    • SQL注入
      • 1)什么是SQL注入
      • 2)SQL注入漏洞对于数据安全的影响
      • 3)SQL注入漏洞的方法
      • 4)SQL注入类型
      • 5)各个数据库注入方式
      • 6)如何预防SQL注入
      • 7)SQL注入工具


SQL注入

1)什么是SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行指定的SQL语句。具体来说,它是利用现有应用程序,将SQL语句注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入SQL语句得到一个存在安全漏洞的网站上的数据,而不是按照设计者意图去执行SQL语句。应用为了和数据库进行沟通完成必要的管理和存储工作,必须和数据库保留一种接口。目前的数据库一般都是提供api以支持管理,应用使用底层开发语言如 Php,Java,asp,Python与这些api进行通讯。对于数据库的操作,目前普遍使用一种SQL语言(Structured Query Language语言,SQL语言的功能包括查询、操纵、定义和控制,是一个综合的、通用的关系数据库语言,同时又是一种高度非过程化的语言,只要求用户 指出做什么而不需要指出怎么做),SQL作为字符串通过API传入给数据库,数据库将查询的结果返回,数据库自身是无法分辨传入的SQL是合法的还是不合 法的,它完全信任传入的数据,如果传入的SQL语句被恶意用户控制或者篡改,将导致数据库以当前调用者的身份执行预期之外的命令并且返回结果,导致安全问题。

2)SQL注入漏洞对于数据安全的影响

SQL注入漏洞会:
可读取/修改数据库中的库和表

  1. 获取用户的账号,密码(可能被加密过),邮箱,联系方式
  2. 信用卡信息
  3. 修改产品价格
  4. 删除数据

可执行系统命令

  1. 修改权限,获取系统管理员权限
  2. 修改任意文件
  3. 安装后门

SQL注入原理如下:

在这里插入图片描述

3)SQL注入漏洞的方法

下图是一个常见的登录页面:

在这里插入图片描述
点击“submit”之后,web应用会执行:

  1. 接收发送的POST请求
  2. 获取用户名和密码:(bart, simpson)
  3. 构建SQL语句:select * from users where username = 'bart' and password = 'simpson';
  4. 发送给数据库服务器来验证

这个时候,我们可以对username进行变化

  1. 输入的用户名不是简单的bart,而是 bart’ and 1=1; –
  2. 这样整个语句变成如下:
    select * from users where username = 'bart' and 1=1; -- ' and password = 'simpson';
  3. 这个时候,–后面的都会变成注释,不用密码就能进行登录。

4)SQL注入类型

简单注入(simple SQL injection)

  1. 永真式:最后加入 or 1=1 来保证无论如何都能获取数据。
  2. 错误语句:让Web应用构造错误的SQL语句来抛异常,来判断数据库类型
  3. 结束注释:使用注释符注释剩余语句
  4. 联合查询:使用union all,后面可以写我要查询的真正语句

盲注(Blind SQL injection)

  1. 一般我们可以根据返回数据获取我们想要的信息。
  2. 但一些页面,我们是获取不到详细信息。信息只有正确或不正确。

5)各个数据库注入方式

  1. 注释符: --(MSSQL, MySQL), #(MySQL), /comment/(MySQL)
  2. 单行用分号隔开,运行多个SQL语句:MSSQL
  3. 判断(IF,ELSE语句)
    MySQL:IF(condition,true-part,false-part) SELECT IF(1=1,'true','false')
    MSSQL:IF condition true-part ELSE false-part IF (1=1) SELECT 'true' ELSE SELECT 'false'
    Oracle:BEGIN IF condition THEN true-part; ELSE false-part; END IF; END; BEGIN IF (1=1) THEN dbms_lock.sleep(3); ELSE dbms_lock.sleep(0); END IF; END;
  4. 字符串链接:
    MSSQL:+
    MySQL,Oracle: ||

示例:
在DVWA,我们可以进行测试:

简单注入:

  1. 1’ and 1=1; # , 1’ and 1=1; # 判断是否可以被注入
  2. 1’ or 1=1; # 来尝试获取全部账号信息
  3. 1’ union all select 1, 2; # 来判断可以获取的参数个数
  4. 1’ union all select 1,(@@version); #来获取数据库版本
  5. 1’ union all select 1,(database()); #获取数据库名称
  6. 1’ union all select 1, group_concat(column_name) from information_schema.columns where table_name=‘users’ ; #获取表所有列名

6)如何预防SQL注入

数据库可以运行系统命令

  1. 用最小化权限的账户启动数据库
  2. 进制让数据库执行系统命令

连接数据库的用户权限过大

  1. 使用IDS,WAF等监控是否有异常操作
  2. 连接数据库的用户权限最小化

错误信息返回过多的信息

  1. 统一管理错误信息
  2. 禁止向用户提供错误信息

在服务器未进行过滤

  1. 过滤所有客户端数据
  2. 审核数据

在这里插入图片描述

7)SQL注入工具

SQLMAP
功能强大
界面不友好
AWVS/APPScan/WebInspect
可以查找各种类型的漏洞
速度较慢

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

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

相关文章

WSL2 window上高效运行Linux

1 WSL及优势 1.1 WSL简介 WSL(Windows Subsystem for Linux)是Windows操作系统中的一个功能,它允许用户在Windows环境下运行Linux应用程序。WSL提供了一个与Linux内核兼容的系统调用转发层,使得Linux二进制文件可以在Windows上直…

基于风险的漏洞管理

基于风险的漏洞管理涉及对即将被利用的漏洞的分类响应,如果被利用,可能会导致严重后果。本文详细介绍了确定漏洞优先级时要考虑的关键风险因素,以及确保基于风险的漏洞管理成功的其他注意事项。 什么是基于风险的漏洞管理对基于风险的漏洞管…

vue中html引入使用<%= BASE_URL %>变量

首先使用src相对路径引入 注意: js 文件放在public文件下 不要放在assets静态资源文件下 否则 可能会报错 GET http://192.168.0.113:8080/src/assets/js/websockets.js net::ERR_ABORTED 500 (Internal Server Error) 正确使用如下:eg // html中引…

(线特征)opencv+opencv contribute 配置

写一篇博客,记录开始线特征slam的历程。 在配置环境的时候,可以发现大多数都是用到了opencv3.4.16和其contribute版本,这里进行一个相关操作的教学。配置环境是在Ubuntu下面进行的,建议使用Ubuntu18来进行线特征的配置以及代码的…

国产AI芯片突破,芯片或成白菜价,恐惧的美芯阻止台积电为它代工

日前消息指台积电大幅减少一家中国AI芯片企业的产能,原因在于国产AI芯片的性能已接近美芯,美国芯片企业NVIDIA与相关的资本机构贝莱德联手施压台积电所致,凸显出美国芯片忧虑中国AI芯片的竞争力。 这家国产AI芯片企业为壁仞科技,据…

【精算研究01/10】 计量经济学的性质和范围

一、说明 计量经济学是使用统计方法来发展理论或测试经济学或金融学中的现有假设。计量经济学依赖于回归模型和零假设检验等技术。计量经济学也可以用来预测未来的经济或金融趋势。 图片来源:https://marketbusinessnews.com 二、 计量经济之简介 计量经济学是对经济…

Spring MVC 学习总结

学习目标 了解 Spring MVC 是什么,为什么要使用它或者说它能解决什么问题,其与 Spring 是什么关系。理解为什么配置 Spring MVC 的前端控制器的映射路径为 “/” 会导致静态资源访问不了,掌握怎么处理这个问题。掌握基于注解方式使用 Spring…

有哪些前端调试和测试工具? - 易智编译EaseEditing

前端开发调试和测试工具帮助开发人员在开发过程中发现和修复问题,确保网站或应用的稳定性和性能。以下是一些常用的前端调试和测试工具: 调试工具: 浏览器开发者工具: 现代浏览器(如Chrome、Firefox、Safari等&#…

深度学习2.神经网络、机器学习、人工智能

目录 深度学习、神经网络、机器学习、人工智能的关系 大白话解释深度学习 传统机器学习 VS 深度学习 深度学习的优缺点 4种典型的深度学习算法 卷积神经网络 – CNN 循环神经网络 – RNN 生成对抗网络 – GANs 深度强化学习 – RL 总结 深度学习 深度学习、神经网络…

Hbase-技术文档-java.net.UnknownHostException: 不知道这样的主机。 (e64682f1b276)

问题描述: 在使用spring-boot操作habse的时候,在对habse进行操作的时候出现这个问题。。 报错信息如下: 第一段报错: 第二段报错: java.net.UnknownHostException: e64682f1b276 问题定位解读: 错误 ja…

Android 13 - Media框架(7)- NuPlayer::Source

Source 在播放器中起着拉流(Streaming)和解复用(demux)的作用,Source 设计的好坏直接影响到播放器的基础功能,我们这一节将会了解 NuPlayer 中的通用 Source(GenericSource)关注本地…

Nginx配置文件详解

Nginx配置文件详解 1、Nginx配置文件1.1主配置文件详解1.2子配置文件 2、全局配置部分2.1修改启动的工作进程数(worker process) 优化2.2cpu与worker process绑定2.3 PID 路径修改2.4 修改工作进程的优先级2.5调试工作进程打开的文件的个数2.6关闭master-worker工作…

postman接口自动化测试框架实战!

什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来。 本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完成的用…

《Kubernetes故障篇:Container runtime network not ready》

一、环境信息 操作系统K8S版本containerd版本Centos7.6v1.24.17v1.6.12 二、背景信息 1、通过以下命令检查网络插件的状态,发现网络插件coredns处于pending状态 2、通过以下命令检查kubelet服务状态,发现Container runtime network not ready等报错 三…

05.sqlite3学习——DML(数据管理:插入、更新、删除)

目录 DML(数据管理:插入、更新、删除) 插入 更新 删除整个表 语法 实例 DML(数据管理:插入、更新、删除) 数据操纵(DML):用于增、删、改数据 作用:负…

wxpython:wx.html2 是好用的 WebView 组件

wxpython : wx.html2 是好用的 WebView 组件。 wx.html2 是wxPython扩展模块中封装得干净漂亮的模块之一,它被设计为允许为每个端口创建多个后端,尽管目前只有一个可用。它与wx.html.HtmlWindow 的不同之处在于,每个后端实际上都是一个完整的…

C++中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点

C中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点 &#xff1c;string&#xff1e;的getline()函数语法如下【https://cplusplus.com/reference/string/string/getline/】&#xff1a; istream& getl…

抖音seo短视频矩阵系统源码开发源代码分享--开源-可二开

适用于抖音短视频seo矩阵系统&#xff0c;抖音矩阵系统源码&#xff0c;短视频seo矩阵系统源码&#xff0c;短视频矩阵源码开发&#xff0c;支持二次开发&#xff0c;开源定制&#xff0c;招商加盟SaaS研发等。 功能开发设计 1. AI视频批量剪辑&#xff08;文字转语音&#x…

官方项目《内容示例》中Common UI部分笔记: 1.1 Activatable Widgets

本文主要面向UMG以及Common UI的初学者 文章目录 效果展示概要Activate和Deactivate可见性绑定UI动画设置Common Activatable Widget的默认焦点 效果展示 概要 这个例子非常简单&#xff0c;定义了13个Common Activatable Widget CommonUI_ActivatableWidgets相当于一个容器包…

LLM本地知识库问答系统(一):使用LangChain和LlamaIndex从零构建PDF聊天机器人指南

随着大型语言模型&#xff08;LLM&#xff09;&#xff08;如ChatGPT和GPT-4&#xff09;的兴起&#xff0c;现在比以往任何时候都更容易构建比普通熊更智能的智能聊天机器人&#xff0c;并且可以浏览堆积如山的文档&#xff0c;为您的输入提供准确的响应。 在本系列中&#xf…