iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >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://www.lsjlt.com/news/288317.html(转载时请注明来源链接)

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 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
  • SQL字符型注入和数字型注入有什么区别
    SQL字符型注入和数字型注入的区别:当输入的参数为整形时,存在注入漏洞,则是数字型注入,而字符型注入的参数是字符串。数字型不需要单引号来闭合,而字符串一般需要通过单引号来闭合的,例如://数字型:select * from tab...
    99+
    2024-04-02
  • Web中宽字节注入攻击原理的示例分析
    这篇文章主要为大家展示了“Web中宽字节注入攻击原理的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Web中宽字节注入攻击原理的示例分析”这篇文章吧。宽字节注入攻击宽字节注入攻击的测试地...
    99+
    2023-06-25
  • 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中IO流的字节流
    这期内容当中小编将会给大家带来有关深入浅析Java中IO流的字节流,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java中IO流 字节流实例详解IO流(输入流、输出流),又分为字节流、字符流。  流是磁盘...
    99+
    2023-05-31
    java io流 字节流
  • 典型的sql注入字符串有哪些
    典型的sql注入字符串方式有:sql注释语句,例如:–:表示单行注释/…/:用于多行(块)注释SELECT 查询语句,如:SELECT 列名称 FROM 表名称SELECT * FROM 表名称UNION操作符,如:...
    99+
    2024-04-02
  • sql注入是怎么拼接字符串的
    sql注入拼接字符串的方法:常见的字符串连接函数有concat(),concat_ws(),group_concat(),使用示例:SELECT concat(id, ‘,’, name) A...
    99+
    2024-04-02
  • 深入了解PHP注释:单行注释和多行注释的区别
    进入PHP编程领域,注释是一个非常重要的概念。在编写代码时,注释对于阐述代码意图、帮助其他开发者理解代码逻辑以及方便自己日后维护代码都是至关重要的。在PHP中,注释分为单行注释和多行注...
    99+
    2024-03-15
    php注释 单行注释 多行注释
  • 深入了解Golang编译过程与字节码的关联
    探索Golang的编译过程与字节码关系 Golang,是一个开源的静态类型编程语言,由Google开发。它以其高效的并发特性和简洁的语法而闻名,被广泛应用于各种领域的软件开发中。在Go...
    99+
    2024-02-26
    编译 golang 字节码
  • Java Spring中各依赖注入注解的区别是什么
    本篇文章给大家分享的是有关Java Spring中各依赖注入注解的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Spring对于Be...
    99+
    2024-04-02
  • @Autowired与@Resource在实现对象注入时的区别
    目录简述详解相同点1:属性注入(Field Injection)相同点2:setter注入不同点1:@Autowried可以使用构造方法注入,而@Resource不支持构造方法注入不...
    99+
    2023-05-17
    @Autowired与@Resource注解区别 @Autowired @Resource
  • Java IO中字节输入输出流的示例分析
    这篇文章主要介绍Java IO中字节输入输出流的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!讲的是字节输入输出流:InputStream、OutputSteam(下图红色长方形框内),红色椭圆框内...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作