返回顶部
首页 > 资讯 > 数据库 >MySQL中SQL的单字节注入与宽字节注入的区别
  • 462
分享到

MySQL中SQL的单字节注入与宽字节注入的区别

2023-06-17 09:06:12 462人浏览 薄情痞子
摘要

这篇文章主要讲解了“MySQL中sql的单字节注入与宽字节注入的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql中SQL的单字节注入与宽字节注入的区别”吧!一、单字节SQL注入m

这篇文章主要讲解了“MySQLsql的单字节注入与宽字节注入的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mysql中SQL的单字节注入与宽字节注入的区别”吧!

一、单字节SQL注入

mysql的SQL注入已经由来已久,以下是普遍采用的注入步骤:

在GET参数上加一个/*或者#(mysql专有的注释),判断数据库是否是mysql,比如:
Http://www.xxx.com.cn/article.PHP?id=1607 and 1=1/*

猜解某表的字段数,从order by 1一直更改到页面出错为止,就可以得到该表的字段数

注入URL:http://www.xxx.com.cn/article.php?id=1607 or 1=1 order by 10#

对应的SQL:

select * from articles where id=1607 or 1=1 order by 10#….

使用该表和用户表进行关联查询,在文章列表里就可以看到用户名和密码了。当也要猜解用户表的表名和用户名、密码的字段名,比如上一步得到的字段数是5:

注入的URL:http://www.xxx.com.cn/article.php?id=1607 or 1=1 uNIOn select  username,passWord,1,2,3 from user

对应的SQL:

select * from articles where id=1607 or 1=1  union select  username,password,1,2,3 from user

这样就可以在界面上看到用户名和密码了。

解决方法:

过滤数据:这并不是罗唆。在合适的地方使用良好的数据过滤,可以减小多数安全隐患,甚至可以消除其中的一部分。

将数据用括号包含:如果你的数据库允许(MySQL 允许),在 SQL 语句中,不论什么类型的数据都用单引号包含起来。

转义数据:一些合法的数据可能在无意中破坏 SQL 语句本身的格式。使用 mysql_escape_string() 或者所使用数据库提供的转移函数。如果没有提供这样的函数,addslashes() 也是不错的***选择。

二、宽字节注入

宽字节注入也是在最近的项目中发现的问题,大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ = %df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MYSQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗’,也就是说:%df\’ = %df%5c%27=縗’,有了单引号就好注入了。比如:

<?$conn = mysql_connect(”localhost”,”root”,”2sdfxedd”);mysql_query(”SET NAMES ‘GBK’”);mysql_select_db(”test”,$conn);$user = mysql_escape_string($_GET['user']);$pass = mysql_escape_string($_GET['pass']);$sql = “select * from cms_user where username = ‘$user’ and password=’$pass’”;$result = mysql_query($sql,$conn);while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {$rows[] = $row;}?>

则通过以下注入即可:
http://www.xxx.com/login.php?user=%df’%20or%201=1%20limit%201,1%23&pass=

对应的SQL是:

select * from cms_user where username = ‘運’ or 1=1 limit 1,1#’ and password=”

解决方法:就是在初始化连接和字符集之后,使用SET character_set_client=binary来设定客户端的字符集是二进制的。如:

mysql_query(”SET character_set_client=binary”);

感谢各位的阅读,以上就是“MySQL中SQL的单字节注入与宽字节注入的区别”的内容了,经过本文的学习后,相信大家对MySQL中SQL的单字节注入与宽字节注入的区别这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中SQL的单字节注入与宽字节注入的区别

本文链接: https://lsjlt.com/news/288317.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MySQL中SQL的单字节注入与宽字节注入的区别
    这篇文章主要讲解了“MySQL中SQL的单字节注入与宽字节注入的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL中SQL的单字节注入与宽字节注入的区别”吧!一、单字节SQL注入M...
    99+
    2023-06-17
  • SQL宽字节注入是什么
    本篇内容介绍了“SQL宽字节注入是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基础知识宽字节在了解宽字节注入之前,我们要了解一下什么是...
    99+
    2023-07-05
  • SQL注入篇学习之盲注/宽字节注入
    目录盲注布尔盲注时间盲注盲注函数length() 函数 返回字符串的长度演示语句burp抓包演示宽字节注入php魔术函数开启方式开启效果作用绕过方法宽字节注入总结 盲注 有...
    99+
    2024-04-02
  • SQL注入宽字节注入由浅到深学习
    目录前言基础知识宽字节宽字节注入例子例题一例题二SQLMAP应用结语前言 突然想起来之前讲SQL注入时忘记讲一下这个宽字节注入了,因为这个知识点还是挺重要的,所以本文就带大家了解一...
    99+
    2023-02-24
    SQL宽字节注入 SQL 注入
  • 宽字节注入%df的理解
    宽字节注入是sql注入的一种手段,利用mysql使用GBK编码(因为GBK占用2个字节,而ascii占用1个字节),将两个字符看作一个汉字,从而消除转义字符\。(当某字符的大小为一个字节时,称其字符为窄字节当某字符的大小为两个字节时,称其字...
    99+
    2023-08-31
    sql mysql php web安全 1024程序员节
  • 在mysql中宽字节注入的示例分析
    这篇文章将为大家详细讲解有关在mysql中宽字节注入的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言在mysql中,用于转义的函数有addslashes,mysql_real_escape_s...
    99+
    2023-06-17
  • PHPCMS漏洞之v9宽字节注入问题
    关于阿里云提示“phpcms v9宽字节注入问题”的漏洞修复方案简介: 漏洞名称:phpcms v9宽字节注入问题 补丁文件:www/phpcms/modules/pay/respond.php 补丁来源:云盾自研 漏洞描述:phpcmsv...
    99+
    2019-07-06
    PHPCMS 漏洞 v9 宽字节注入
  • Web中宽字节注入攻击原理的示例分析
    这篇文章主要为大家展示了“Web中宽字节注入攻击原理的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Web中宽字节注入攻击原理的示例分析”这篇文章吧。宽字节注入攻击宽字节注入攻击的测试地...
    99+
    2023-06-25
  • SQL字符型注入和数字型注入有什么区别
    SQL字符型注入和数字型注入的区别:当输入的参数为整形时,存在注入漏洞,则是数字型注入,而字符型注入的参数是字符串。数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的,例如://数字型:select * from tab...
    99+
    2024-04-02
  • Java中的字节,字符输出流与字节和字符输入流的简单理解
    目录字节输出流OutputStream字符输出流字节输入流InputStream字符输入流Reader字节流和字符流的区别总结我先解释一下什么叫IO流: I:指的是Inpu...
    99+
    2024-04-02
  • Web网络安全解析宽字节注入攻击原理
    目录宽字节注入攻击宽字节注入代码分析宽字节注入攻击 宽字节注入攻击的测试地址:http://127.0.0.1/sqli/kuanzijie.php?id=1。 访问id=1...
    99+
    2024-04-02
  • 详解Java中字符流与字节流的区别
    Java中字符流与字节流的区别1. 什么是流    Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列。和水流一样,Java中的流也具有一个“流动的方向”,...
    99+
    2023-05-31
    java 字符流 字节流
  • Java中的字节和字符输入流的简单介绍
    本篇内容介绍了“Java中的字节和字符输入流的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录字节输出流OutputStream字...
    99+
    2023-06-20
  • java中的字符流和字节流的区别
    字节流Java中的字节流处理的最基本单位为单个字节,它通常用来处理二进制数据。Java中最基本的两个字节流类是InputStream和OutputStream,它们分别代表了组基本的输入字节流和输出字节流。InputStream类与Outp...
    99+
    2020-11-28
    java入门 java 字符流 字节流 区别
  • java字符流与字节流的区别是什么
    java中字符流与字节流的区别:(推荐:java视频教程)字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。字节流默认不使用缓冲区;字符流使用缓冲区。字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支...
    99+
    2022-03-22
    java 字符流 字节流
  • 图文详解Java中的字节输入与输出流
    目录字节输入流 字节输入流结构图FileInputStream类构造方法:常用读取方法:字节输出流 字节输出流结构图:FileOutputStream类构造方法:常用写入方法:总结字节输入流 java.io.InputStream抽象类是...
    99+
    2017-02-14
    java字节输入流和输出流 java文件输入输出字符流 java字节流
  • 深入浅析Java中IO流的字节流
    这期内容当中小编将会给大家带来有关深入浅析Java中IO流的字节流,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java中IO流 字节流实例详解IO流(输入流、输出流),又分为字节流、字符流。  流是磁盘...
    99+
    2023-05-31
    java io流 字节流
  • sql注入是怎么拼接字符串的
    sql注入拼接字符串的方法:常见的字符串连接函数有concat(),concat_ws(),group_concat(),使用示例:SELECT concat(id, ‘,’, name) A...
    99+
    2024-04-02
  • 典型的sql注入字符串有哪些
    典型的sql注入字符串方式有:sql注释语句,例如:–:表示单行注释/…/:用于多行(块)注释SELECT 查询语句,如:SELECT 列名称 FROM 表名称SELECT * FROM 表名称UNION操作符,如:...
    99+
    2024-04-02
  • 深入了解PHP注释:单行注释和多行注释的区别
    进入PHP编程领域,注释是一个非常重要的概念。在编写代码时,注释对于阐述代码意图、帮助其他开发者理解代码逻辑以及方便自己日后维护代码都是至关重要的。在PHP中,注释分为单行注释和多行注...
    99+
    2024-03-15
    php注释 单行注释 多行注释
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作