当前位置: 首页 > news >正文

MYSQL中的两种转义操作

在 MySQL 中,转义字符用于处理特殊字符,以防止语法错误或 SQL 注入攻击,而单双引号都是需要重点注意的字符

可以用转义符\  和 两个连续的引号 来起到转义引号的作用

转义符转义:

这是users表中的数据

5f285bd409b742f6966f08849af61454.png

如果查询admin' 或者 admin" 用户,可以用转义符\ 

c5ac47d3c98d4a309aac79d753552999.png

 两个连续的引号转义:

可以用两个连续的单引号完成转义单引号操作

aa4ed0493ca84ca98d1f25b9d57275ed.png

又或者

2a5a75e3cf5046a8a2b3d7b6de651c94.png

可以看到语句正常执行并且中间的四个单引号被转义成两个单引号

如果不连续,就会报错

ed747ad33e6844159929b5b84e560b07.png

 其中第二条命令在两个单引号之后插入了1 语句没有报错,只是没有查询到 admin'1  这个用户名

第三条命令报错信息为near '1''' at line 1 

也就是认为'admin'是正常的字符串,而后面的 1'' 格式不对从而导致报错

SQL注入中的演示:

以sqli-labs 第11关为例: 这一关是输入框

82533c2de53c4be588f9a58f00f264b5.png

代码中的查询语句:

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

可以看到是用单引号包围了$uname 和 $passwd 参数,这题是有报错信息回显的

用户名输入admin\ 密码输入 123   会报错 near '123' LIMIT 0,1' at line 1

42beef215e66485fba91a7baf20e1aa9.png
是因为转义符转义了单引号变成 

where username='admin\' and password='123' LIMIT 0,1";  

单引号中的内容匹配的是  admin\' and password=   后面的123' 是格式错误的,所以报错信息是123'

不输入密码 只输入 admin\    会回显

3466732d46424a51bde475c7949098c4.png

报错信息变成了从 admin 开始

输入 admin' 来测试 不输入密码  回显报错  near ''admin'' and password='' LIMIT 0,1' at line 1    

5f72d5b642ee4732b57719f5e9e4c224.png
如果输入密码例如123  那么报错信息就变成  near '123' LIMIT 0,1' at line 1  

b8ff778be7b54abdad1fc28c0bee377a.png
这时错误信息是123' 而不是从admin开始到最后
    
在mysql中 两个连续的单引号表示转义,即'' 表示一个转义过的'

那么前面输入 admin'/123      '' 转义变成'

select username, password from users where username='admin'' and password='123' LIMIT 0,1;

admin'' and password= 被识别为username单引号中的内容  所以出错位置是123'
不输入密码  变成 where username='admin'' and password=''  
按照上面应该是'admin'' and password=' 被识别为字符串内容,那么报错信息应该从最后的单引号'开始
很明显不是,猜测是因为最后的password='' 两个连续的单引号也被转义成了一个字面上的单引号,导致最后没有能够匹配最开始的单引号,不能正常闭合整个字符串,所以报错信息是从admin开始的

输入密码之后隔开了两个单引号,不连续所以没被转义,前面正常,只有后面报错

http://www.lryc.cn/news/481446.html

相关文章:

  • 力扣题目解析--删除链表的倒数第n个节点
  • Knowledge Graph-Enhanced Large Language Models via Path Selection
  • Android 项目模型配置管理
  • 「QT」几何数据类 之 QSizeF 浮点型尺寸类
  • Essential Cell Biology--Fifth Edition--Chapter one(2)
  • 大语言模型LLMs在医学领域的最新进展总结
  • 云防护单节点2T抗攻击能力意味着什么?
  • IDEA在编译时: java: 找不到符号符号: 变量 log
  • HTML 基础架构:理解网页的骨架
  • FPGA学习笔记#5 Vitis HLS For循环的优化(1)
  • web实操4——servlet体系结构
  • Linux开发讲课48--- Linux 文件系统概览
  • Node.js 模块详解
  • 大厂面试真题-说说tomcat的优缺点
  • Linux系统编译boot后发现编译时间与Windows系统不一致的解决方案
  • WPS Office手机去广高级版
  • Python爬虫基础-正则表达式!
  • Python处理PDF组件使用及注意事项
  • langgraph_plan_and_execute
  • [代码随想录打卡Day8] 344.反转字符串 541. 反转字符串II 54. 替换数字
  • DCN DCWS-6028神州数码 AC 设备配置笔记
  • Go语言的常用内置函数
  • 华为OD技术一面手撕题
  • Qt低版本多网卡组播bug
  • Leetcode:540. 有序数组中的单一元素
  • Python数据分析NumPy和pandas(二十七、数据可视化 matplotlib API 入门)
  • 数组指针和指针的区别
  • Linux git-bash配置
  • 【后端速成Vue】computed计算属性
  • 力扣-每日温度