Less-32 宽字节
<!--
下午整了半天Less-29~31,愣是没调好jsp环境,只好跳过。
难受.jpg
!-->
Less-32:
核心语句:



各种回显均存在。
第一句话指定了字符集为gbk。
chech_addslaches 函数是个很强的过滤:
在第二行和第三行,
它通过在前面加一个反斜杠将其转义的方式,屏蔽了单引号和双引号。经过测试,被转义后的单双引号出现在sql语句中不会引起任何报错。
在第一行,
它把所有单独出现的反斜杠变成了两个反斜杠,也相当于将其转义了。
这是怎么做到的呢?
preg_quote()将里面内容中的特殊字符前加一个反斜杠构成转义,以便这些字符能被原样抓走。
在这里, '/'. preg_quote('\\') .'/' 等效于 '/\\\\/' 或 '/\\\\/'
更广泛的,正则表达式特殊字符一般有: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
小圆点连接是一种PHP常用写法,在PHP代码审计中也会经常出现。
至于后面为什么需要六个反斜杠:
首先,三个反斜杠起转义另外三个反斜杠的作用;正则抓到了三个反斜杠。
再次,观察以下输出:


二、四个反斜杠较好理解;
三个反斜杠的时候,前两个反斜活了一个,由于不存在\a转义,第三个反斜也活下来了。
如果那个字母是f、n、t这类的,就不太行了;但这种情况其实根本输不进来。
(还是有点迷糊的;但先这么理解吧)
对于本题,我们采用宽字节注入。
字符集也叫字符编码,是一种将符号转换为十六进制数的转换关系。
ASCII编码:单字节编码
gbk编码:单字节和双字节编码,若第一字节在0x00-0x7F范围内,就为单字节,和 ASCII 保持一致。0x80不作为第一字节使用。双字节的第一字节范围是0x81-0xFE。

utf-8编码:多节编码,若第一字节在0x00-0x7F范围内,就为单字节,和 ASCII 保持一致。其它字符用二至四个字节变长表示。
宽字节就是两个及以上的字节。
由此,构造:(%27是单引号,%5c是反斜杠)
(1)%aa%27
经过过滤:%aa%5c%27
aa大于7f,提示这是个双字节。
解码结果:猏'
(2)%aa%5c%27
经过过滤:%aa%5c%5c%5c%27
解码结果:猏\\' ;两个反斜等于没有。
于是,单引号被解放出来了。
(解码:http://www.mytju.com/classcode/tools/urldecode_gb2312.asp;brup的decoder好像不顶用?)
本题一种payload:?id=-1%df%27 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
Less-32 宽字节的更多相关文章
- PHP函数 addslashes() 和 mysql_real_escape_string() 的区别 && SQL宽字节,绕过单引号注入攻击
首先:不要使用 mysql_escape_string(),它已被弃用,请使用 mysql_real_escape_string() 代替它. mysql_real_escape_string() 和 ...
- 【sqli-labs】 对于less34 less36的宽字节注入的一点深入
1.AddSlashes() 首先来观察一下是如何通过构造吃掉转义字符的 先将less 34的网页编码换成gbk 加上一些输出 echo "Before addslashes(): &quo ...
- 使用Unicode(宽字节字符集);多字节字符集中定义宽字节变量
2012-03-25 14:54 (分类:计算机程序) 2.2 宽字符和C 宽字符不一定是Unicode.Unicode是宽字符集的一种.然而,因为本书的焦点是Windows而不是C执行的理论,所以书 ...
- sqli-libs(32-37(宽字节注入)关)
补充知识:宽字节注入 定义:GB2312.GBK.GB18030.BIG5.Shift_JIS等这些都是常说的宽字节,实际上只有两字节.宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象,即将 ...
- SQL注入汇总(手注,盲注,报错注入,宽字节,二次编码,http头部){10.22、23 第二十四 二十五天}
首先什么是SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入有什么危害? 危害:数据泄露.脱库 ...
- 74cms_3.5.1 宽字节注入
第一次进行CMS的代码审计,我选择了2014年发布的74CMS 3.5.1,历史比较久远的CMS往往存在更多的问题,虽然技术上难度不大,但是在思路方面给了我很大的启发.下面我根据我的思路给大家分享一下 ...
- 关于多字节、宽字节、WideCharToMultiByte和MultiByteToWideChar函数的详解
所谓的短字符,就是用8bit来表示的字符,典型的应用是ASCII码. 而宽字符,顾名思义,就是用16bit表示的字符,典型的有UNICODE. **************************** ...
- windows下多字节和宽字节转换
先简单说下什么是多字节和宽字节. 多字节是指使用多个字节(1-3)表示一个字符.比如gbk使用英文占一个字节,中文占2个,这个就是多字节了.utf-8是使用1-3个字节表示字符.还有big5等等. 宽 ...
- SQL注入--宽字节注入
PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...
- MYSQL注入天书之宽字节注入
Background-7 宽字节注入 Less-32,33,34,35,36,37六关全部是针对'和\的过滤,所以我们放在一起来进行讨论. 对宽字节注入的同学应该对这几关的bypass方式应该比较了解 ...
随机推荐
- 【odoo】【知识杂谈】单一实例多库模式下定时任务的问题分析
欢迎转载,但需标注出处,谢谢! 背景: 有客户反应有个别模块下的定时任务没有正常执行,是否是新装的模块哪些有问题?排查后发现,客户是在一台服务器上跑着一个odoo容器,对应多个数据库.个别库的定时任务 ...
- MySQL——select语句
select: 基本语法:select 列名 或 * from 对象(表.视图...) where: = > < <> != like ----> like 'old%' ...
- git跟踪忽略规则文件.gitignore
在使用Git的过程中,我们希望有的文件比如临时文件,编译的中间文件等不要被跟踪,也不需要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交. 配置语法 以斜杠"/"开 ...
- GoLang设计模式06 - 对象池模式
这次介绍最后一个创建型模式--对象池模式.顾名思义,对象池模式就是预先初始化创建好多个对象,并将之保存在一个池子里.当需要的时候,客户端就可以从池子里申请一个对象使用,使用完以后再将之放回到池子里.池 ...
- poll?transport=longpoll&connection...烦人的请求c
1.问题描述: 最近使用miniui做了一个后台管理系统,打开浏览器调试时,总发现一堆无关的请求,结构大致是:poll?transport=longpoll&connection.....一直 ...
- FastJson之autotype bypass
FastJson之autotype bypass 在1.2.25版本之后,添加了checkAutoType方法.在方法中引入了白名单(AutoType).黑名单(denyList)和autoTypeS ...
- C# 反射 + Quartz,实现流程处理
场景: 前不久,公司里项目经理要求我实现流程处理,比如,用户可以定义一个定时任务,每周一查看报表.定时任务很简单,用Quartz可以实现,但是用户自己选择报表就比较麻烦,因为系统的不同模块的生成报表的 ...
- springmvc配置过程中遇到的一些问题总结
springmvc配置过程中遇到的一些问题总结 1.配置tomcat过程中的错误: 2.配置web.xml中DispatchServlet报红(配置好已有依赖条件下) 解决的办法: 因为新添加依赖,m ...
- 关于软链接ln -s 的使用
1.效果跟windows创建快捷方式是一样的,先找到要被创建的原始文件或目录.然后才能创建. 2.格式:ln -s [源文件或目录] [目标文件或目录] 3.源文件或目录必须是绝对目录. 4 ...
- 5.10学习总结——Activity的跳转和传值
使用sharedpreference是对信息的存储,也可以进行传值,今天通过查找资料,学习了Activity的跳转和传值方法. 跳转 1.显示跳转 4种方法 1 2 3 4 5 6 7 8 9 10 ...