本文章主要涉及sql宽字节注入注入的原理讲解,如有错误,望指出。(附有目录,如需查看请点右下角)

一、首先介绍一下本篇文章所用到的知识点:

常用到的url编码:

  • 空格:%20
  • 单引号:%27
    • 在sql注入中,单(双)引号的应用十分重要,他决定着你能否从原有的一对引号之间逃逸出
  • 井号(#):%23
    • 在sql注入中,#号常被用来注释,即在使用单引号与原有一对单引号的第一个单引号进行闭合之后,用#将原有的一对单引号的第二个单引号注释掉,否则会出现语法错误。
  • 反斜杠():%5C
    • 在sql注入中,\号常用来进行反编译。

addslashes函数(php4,php5,php7):

格式:string addslashes(string $str)

作用:返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线(\)。这些字符是单引号(')、双引号(")、反斜杠(\)与 NULL(NULL字符)

为什么使用该函数:

在单(双)引号,反斜线,NULL前加上反斜线会起到转义的作用:以单引号为例,再加上反斜线之后,单引号就会被转义,就是说,此时的单引号仅仅是一个单引号,但已经不具备单引号原有的语法功能了(相当于单引号就仅仅是一个字符串了)这样就可以在一定程度上对sql注入进行一定的预防。

那么我们应该如何从addslashes函数中逃逸出来呢?

存在两种解决方法:

  • "" 的前面再加一个 ""(或单数个),变成 "\'",这样""就被转义了,"'"逃出了限制。
  • 使 "" 消失掉。

    以上两种方法中,本节课讲述的是第二种,即利用宽字节注入把反斜杠弄没。

二、宽字节注入的原理:

原理:宽字节注入是利用mysql的一个特性,mysql在使用GBK编码的时候,会认为两个字符是一个汉字(前一个asci码要大于128,才到汉字的范围)

eg:

在用hackbar进行汉字输入的时候你会发现,那段汉字就会变成一段百分号编码,这样我们就可以利用这个原理从而把反斜杠干掉。就如上图,在进行转义之后,原本是两个百分号变成了三个,又因为汉字是由两个百分号组成,所以系统就会识别前两个百分号成一个汉字,从而将“\”干掉。%5c就是“\”

CTF-sql-宽字节注入的更多相关文章

  1. SQL宽字节注入

    0x00 概述 - 什么是宽字节注入? 宽字节注入就是因为gbk编码方式需要两个ascii码组合来解码,所以形象的叫做宽字节,这个作为了解即可 -宽字节注入的条件 1) 数据库查询设置为GBK编码 2 ...

  2. sql宽字节注入,绕过单引号

    参加下面: http://leapar.lofter.com/post/122a03_3028a9 http://huaidan.org/archives/2268.html https://ilia ...

  3. PHP函数 addslashes() 和 mysql_real_escape_string() 的区别 && SQL宽字节,绕过单引号注入攻击

    首先:不要使用 mysql_escape_string(),它已被弃用,请使用 mysql_real_escape_string() 代替它. mysql_real_escape_string() 和 ...

  4. CTF—WEB—sql注入之宽字节注入

     宽字节注入 宽字节注入是利用mysql的一个特性,mysql在使用GBK编码(GBK就是常说的宽字节之一,实际上只有两字节)的时候,会认为两个字符是一个汉字(前一个ascii码要大于128,才到汉字 ...

  5. SQL注入--宽字节注入

    PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...

  6. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入

    0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原 ...

  7. Sql 注入详解:宽字节注入+二次注入

    sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...

  8. SQL注入:宽字节注入

    了解GBK编码 尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的 ...

  9. GBK宽字节注入SQL

    SQL注入:宽字节注入(GBK双字节绕过) 2015-06-09lyiang 宽字节注入的作用是非常大的,实际上在代码层的防御一般不外乎两种,一是反斜杠转义,而就是replace替换成空字节,之前的替 ...

  10. SQL注入篇二------利用burp盲注,post注入,http头注入,利用burpsuit找注入点,宽字节注入

    1.布尔盲注burpsuit的使用 先自己构造好注入语句,利用burpsuit抓包,设置变量,查出想要的信息. 比如----查数据库名的ascii码得到数据库构造好语句 http://123.206. ...

随机推荐

  1. Swagger如何匹配多个Controller类或者目录

    方法一(最普通的方式):匹配一个controller目录下的所有controller类. 1 @Bean 2 public Docket creatRestApi(){ 3 return new Do ...

  2. LuoguP5006 [yLOI2018] 大美江湖 题解

    Content 题意实在是太过复杂了,因此请回到题面查看. Data Range 本部分和 Solution 部分变量的含义同题面. \(1\leqslant n,m\leqslant 100,0\l ...

  3. 使用django + KindEditor 开发个人博客系统

    前奏小知识 1. 通过url参数组合不同的过滤条件 django框架部分 1. 数据结构models from django.db import models # Create your models ...

  4. SPringBoot 配置类继承WebMvcConfigurationSupport和实现WebMvcConfigurer的使用

    个人习惯使用  实现的方式 public class WebMvcConfiguration implements WebMvcConfigurer {

  5. Java的运行机制

    Java程序运行机制 编译型(操作系统 c/c++) 解释型(网页 不追求速度) 程序运行机制

  6. 【LeetCode】253. Meeting Rooms II 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序+堆 日期 题目地址:https://leetco ...

  7. 【LeetCode】20. Valid Parentheses 有效的括号

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:有效,括号,括号匹配,栈,题解,leetcode, 力扣 ...

  8. 【LeetCode】880. Decoded String at Index 解题报告(Python)

    [LeetCode]880. Decoded String at Index 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博 ...

  9. 【LeetCode】154. Find Minimum in Rotated Sorted Array II 解题报告(Python)

    [LeetCode]154. Find Minimum in Rotated Sorted Array II 解题报告(Python) 标签: LeetCode 题目地址:https://leetco ...

  10. WPF自定义界面WindowChrome

    WPF自定义界面WindowChrome 默认WPF的界面其实也还行,就是满足不了日渐增长的需求,界面还是需要有更高的自定义程度,包括标题栏也要能够塞下更多的操作控件. 默认窗口介绍 新建WPF项目, ...