SQL 注入漏洞攻击

文章目录

    • 1. 介绍
    • 2. 无密码登录
    • 3. 无用户名无密码登录
    • 4. 合并表获取用户名密码

1. 介绍

在这里插入图片描述

假设你用自己的用户名和密码登录了一个付费网站,网站服务器就会查询一下你是不是 VIP 用户,而用户数据都是放在数据库中的,服务器通常都会向数据库进行查询,要向数据库进行增删改查操作,就需要用到 SQL 语言。

在这里插入图片描述

但是,作为 SQL 的注入攻击者,我们并不知道网站的密码是什么,甚至都不知道用户名是什么,那就不能按正常套路出牌了。
这个时候我们不输入正常的数据,而是把数据转换成代码,使得服务器向数据库的正常查询变成了不正常的代码执行, 那么攻击者就可以执行自己想要的操作了。

如下代码,这是正常的查询操作,只有用户名和密码都匹配时,才能成功登陆。

select * from users
where
username='栈老师' and password='123456'

但是服务器如果没有过滤用户输入的数据,就很危险了!比如说,我们在用户名最后加上一个单引号,在 SQL 执行的时候,一对引号里面的东西会视为字符数据,但是因为这里的引号不成对,因此这条查询语句是会直接报错的,如果此时服务器把这条 SQL 报错信息直接返回给用户,那么攻击者就知道具体是什么原因导致报错了, SQL 注入攻击的门也就这样打开了。

2. 无密码登录

如果我们在用户名的单引号后面加上两个-,事情就不一样了。在 mysql 内部,系统遇到两条横杠就会认为从此处开始到该行结束,中间的内容都是注释,而注释是不会被视为代码执行的, 相当于只会执行前面部分的 SQL 语句。

所以只知道用户名,即使没有密码,也是可以进行登录的,代码如下:

select * from users
where
username='栈老师' --' and password='123456'

3. 无用户名无密码登录

上面是只知道用户名不知道密码的情况。那如果我们连正确的用户名信息都没有呢?
SQL 语句在遇到 where 关键词的时候会判断条件是真还是假,我们把这里的条件放在 or 里面进行拼接,因为 or 的一边为真,那么整体就为真,所以我们只需要再增加一个为真的条件就可以了, 比如 1=1,这个时候即使用户信息错误,where 的逻辑判断也总是为真。

那么即使不知道用户名和密码,依然可以登录:

select * from users
where
username='栈老师' or 1=1

4. 合并表获取用户名密码

我们都知道合并两个表格可以用 union 关键字,像下面这样:

select * from table1
union
select * from table2

mysql 规定,union select 的后面可以不指定表名,只需要两个表格的列数相同、数据类型对应即可。
所以我们直接在 select 后面用 null 来代替列名。null 代表没有值,但是 union 必须要保证合并两边的列数是一致的,攻击者就可以通过增加 null 的个数来测出表格的列数。

select * from products
union
select null, null, null

攻击者现在用其他方法知道了另一个表格(用户表)的信息,那就可以把表格的列名放在 null 的位置,并且指定选取的表格名。
但是 union 除了要保证列数一致以外,还要保证数据类型的相似性,否则是无法进行合并的。
实际上攻击者在确定好列数以后,还会进行数据类型的判断,比如逐列进行测试。测试完毕之后就可以把所有的东西都放在一起了。
首先在可以注入的地方,用单引号强行终止数据内容,并且加上两个横杠使得后面的语句失效,这样 SQL 语句就不会报错。

这样,攻击者就可以在此处注入 union 语句了:

select * from products
where name = 'apple'
union
select null, username, password from users --'

此时,账号密码信息就这样被合并到 products 表中了!

在这里插入图片描述

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

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

相关文章

二维多孔介质图像的粒度分布研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Gartner 2023API管理市场指南重磅发布,得帆云iPaaS标杆入榜

中国API管理-市场指南 Market Guide for API Management, China 是由全球最具权威的IT咨询与研究机构Gartner发布、聚焦中国API管理市场领域的专业研究报告,通过对市场概况以及代表厂商的分析,为企业决策者提供重要依据与参考。 得帆云iPaaS融合集成平台…

【MySQL系列】MySQL的用户管理

「前言」文章内容大致是MySQL的用户管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、用户管理1.1 用户信息1.2 创建新用户1.3 删除用户1.4 修改用户密码 二、数据库的权限2.1 给用户授权2.2 回收用户权限 一、用户管理 MySQL与Linux类似&#x…

NAT(网络地址转换)

文章目录 一、产生背景二、公有地址和私有地址三、定义四、分类五、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、产生背景 IPv4公网地址资源耗尽: 由于IPv4地址空间有限,公网IPv4地址资源逐渐耗尽,导致难以分…

基于Android的生鲜农产品商城交易设计与实现

摘 要 人们生活水平随着发展不断的提升,人们对生鲜产品消费比越来越依赖,都希望吃到新鲜的食品。消费的加大给生鲜了全新的供应链及销售模式,那种传统的生鲜配送模式也在发生着变化。生鲜系统电商平台在我国目前是属于盛行的电商行业&#x…

如何将pdf文件变小?三招学会pdf文件压缩

在日常工作和生活中,我们常常需要处理大量的PDF文件,然而,有时候这些文件的大小会成为问题,比如文件太大无法通过邮件发送、在线上传,或者在手机上打开时读取缓慢等,为了解决这些问题,我们需要将…

PN结解释

基本原理 PN结由P和N组成 硅掺杂硼,缺少电子,显正电,就是P(Positive) 硅掺杂磷,多出电子,显负电,就是N(Negative) 将P和N拼接 左边代表游离的电子&#xf…

flex布局学习笔记

flex布局 推荐网址:弹性框完整指南 |CSS-Tricks - CSS-Tricks 基础知识和术语 由于flexbox是一个完整的模块,而不是一个单一的属性,它涉及很多事情,包括它的整套属性。其中一些应该在容器(父元素,称为“…

这些嵌入式系统安全性的知识你需要了解

这可能是 工程师在面对嵌入式系统应用程序的安全性时可能提出的第一个问题。 不幸的是,有大量的“安全软件包”可用,并且对安全性不熟悉的嵌入式工程师可能只将安全性称为加密或病毒防护。尽管加密是安全性的一种工具,而病毒扫描程序从技术上…

Python爬虫实现(requests、BeautifulSoup和selenium)

Python爬虫实现(requests、BeautifulSoup和selenium) requests实现 Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。 下载requests库 pip install requests 实例: # 导…

基于Android系统图书管理系统

摘要 随着移动终端使用率的快速增加,Android智能产品已日益成为越来越多的人们选择的移动终端产品。伴随着Android智能手机与平板电脑已经在我们生活大量的使用,越来越多的基于Android开发平台的应用也随之产生。 便捷的图书检索和借阅:用户可…

ACL(访问控制列表)

文章目录 一、ACL定义常见功能 二、基于ACL的包过滤定义包过滤的方向包过滤的工作流程注意事项 三、ACL分类四、常用命令 首先可以看下思维导图,以便更好的理解接下来的内容。 一、ACL 定义 ACL,也称为访问控制列表,是一种网络安全工具&…

【爬虫】8.1. 深度使用tesseract-OCR技术识别图形验证码

深度使用tesseract-OCR技术识别图形验证码 文章目录 深度使用tesseract-OCR技术识别图形验证码1. OCR技术2. 准备工作3. 简单作用了解3.1. 验证码图片爬取-screenshot_as_png3.2. 识别测试-image_to_string3.2.1. 正确识别3.2.2. 错误识别3.2.3. 灰度调节 3.3. 识别实战-使用im…

卫星地图-航拍影像-叠加配准套合(ArcGIS版)

卫星地图-航拍影像-叠加配准套合(ArcGIS版) 发布时间:2018-01-17 版权:BIGEMAP 第一步 工具准备 BIGEMAP地图下载器:Bigemap系列产品-GIS行业基础软件kml\shp 相关教程:CAD文件直接导入BIGEMAP进行套合配准(推荐&am…

TC测试自动化Shell脚本

在使用TC测试的发现手动进行丢包延迟抖动等场景的组合以及TC命令的切换效率很低,写了一个脚本可以提升效率,也可以根据自己的需求进行脚本更改! 使用方法: 1)运行sh脚本 2)输入TC想要限制的网卡名和服务器…

数字信封技术概论

数字信封技术是一种通过加密手段实现信息保密性和验证的技术,它在保护敏感信息传输过程中得到了广泛应用。本文将详细介绍数字信封技术的原理、实现和应用场景。 一、数字信封技术的原理 数字信封技术是一种将对称密钥通过非对称加密手段分发的方法。在数字信封中…

【Fiddler】mac m1 机器上使用 fiddler 抓取接口

mac m1 机器上使用 fiddler 抓取接口(非虚拟机模式) author: jwensh date:2023.09.12 文章目录 mac m1 机器上使用 fiddler 抓取接口(非虚拟机模式)1. 环境准备2. 进行配置3. 使用情况 1. 环境准备 想要抓取 mac 上浏览器的接口&a…

JAVA8接口使用问题

JAVA8接口使用问题 文章目录 JAVA8接口使用问题1、默认方法冲突问题(1)亲爹优先原则(2)左右为难 2、常量冲突问题 1、默认方法冲突问题 (1)亲爹优先原则 当一个类,既继承一个父类,…

C语言数组和指针笔试题(一)(一定要看)

目录 一维数组例题1例题2例题3例题4例题5例题6例题7例题8例题9例题10例题输出结果 字符数组例题1例题2例题3例题4例题5例题6例题7 一维数组 int a[] {1,2,3,4}; 1:printf("%d\n",sizeof(a)); 2:printf("%d\n",sizeof(a0)); 3:printf("%d\n",si…