sqli-labs less32-37(宽字节注入)
less-32 Bypass addslashes()
less-33 Bypass addslashes()
less-34 Bypass Add SLASHES
less-35 addslashes()
less-36 Bypass MySQL Real Escape String
less-37 MySQL_real_escape_string
宽字节注入的原理
mysql使用的是gbk编码的时候,默认认为两个字符为一个汉字。当网站过滤的机制是采用转义\的时候,我们可以在网站添加的转义符号前面构造一个%xx使得变成%xx%5c而被mysql认为是一个汉字,从而绕过转义。
宽字节注入最长用的时%df,或者使用ascii码大于128的也可以 ,一般用129.
看到这里的时候其实我并没有理解这段意思,直接看做题过程理解宽字节注入的原理。
如何转成url编码
将十进制数转成十六进制,去最后两位前面加上百分号
例如129;129(十进制) -> 0x81 (十六进制) %81(url编码)
less-32 Bypass addslashes()
过程:
- 源码:
function check_addslashes($string)
{
$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string); //escape any backslash
$string = preg_replace('/\'/i', '\\\'', $string); //escape single quote with a backslash
$string = preg_replace('/\"/', "\\\"", $string); //escape double quote with a backslash
return $string;
}
输入1'
发现错误为1\'
, 源码中1\\\'
中的第1和3个\表转义,构造的闭合'就会被当成字符串处理,而不是当作id的包裹,所以在这里没有作用
思路:
需要在构造一个反斜杠来转义后一个反斜杠达到过滤的效果。
- ?id=-1%aa' union select 1,2,3 --+
%aa -> '/'
?id=-1%aa' union select 1,2,3 --+
?id=-1%df' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),(select group_concat(column_name) from information_schema.columns where table_schema=database()) --+
从网上看到还有一种解法
%5c代表\ ,所以我们只要用字母组合使其形成宽字节,从而使\(斜杠)失效,例如我们这里用%ee和%5c进行组合,然后构造payload
less-33 Bypass addslashes()
有一些过滤但是
%df,%ee,%5c都可以使用
less-34 Bypass Add SLASHES (POST)
看题目是个POST传参,那就先传值进去,然后继续使用%df宽字节注入
正常来说回显应该跟上一关一样,但是34关并没有成功。 burp抓包看看
- a%df'
uname处多了个%25 说明又经过了一次转码,所以在burp中直接修改参数可直接执行
之后过程跟上一关一样
less-35 addslashes()
参考Less-1
less-36 Bypass MySQL Real Escape String
单引号闭合
看了下源码只是函数变成mysql_real_escape_string() 与less-32相似
less-37 MySQL_real_escape_string
同Less-34
sqli-labs less32-37(宽字节注入)的更多相关文章
- 【sqli-labs】 less32 GET- Bypass custom filter adding slashes to dangrous chars (GET型转义了'/"字符的宽字节注入)
转义函数,针对以下字符,这样就无法闭合引号,导致无法注入 ' --> \' " --> \" \ --> \\ 但是,当MySQL的客户端字符集为gbk时,就可能 ...
- MYSQL注入天书之宽字节注入
Background-7 宽字节注入 Less-32,33,34,35,36,37六关全部是针对'和\的过滤,所以我们放在一起来进行讨论. 对宽字节注入的同学应该对这几关的bypass方式应该比较了解 ...
- 【sqli-labs】 对于less34 less36的宽字节注入的一点深入
1.AddSlashes() 首先来观察一下是如何通过构造吃掉转义字符的 先将less 34的网页编码换成gbk 加上一些输出 echo "Before addslashes(): &quo ...
- 74cms_3.5.1 宽字节注入
第一次进行CMS的代码审计,我选择了2014年发布的74CMS 3.5.1,历史比较久远的CMS往往存在更多的问题,虽然技术上难度不大,但是在思路方面给了我很大的启发.下面我根据我的思路给大家分享一下 ...
- SQL注入--宽字节注入
PHP测试代码: <?php // 面向对象写法 $id=addslashes($_GET[‘id’]); //获取id并转义预定义字符 // /$id=$_GET[‘id’]; $mysqli ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 5.全局防护Bypass之宽字节注入
0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原 ...
- Mysql宽字节注入(转)
尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的一套编码,比如g ...
- Sql 注入详解:宽字节注入+二次注入
sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...
- sqli-labs(十四)(宽字节注入)
数据库使用gbk编码的时候,会将两个字符合并成一个中文. 写在前面吧,对php的代码审计也会有帮助 直接使用 set character_set_client=gbk 或者是常见的mysql_quer ...
随机推荐
- linux系统中重启网卡后网络不通(NetworkManager篇)
一.故障现象 RHEL7.6系统,使用nmcli绑定双网卡后,再使用以下命令重启network服务后主机网络异常,导致无法通过ssh远程登录系统. # systemctl restart networ ...
- Python基础数据类型与for循环
数据类型:int,bool,str,list, tuple元组,dict字典. 1.数字:12,3,4 在使用print打印数字时,在终端界面中无法判断出打印的是什么类型,当我们需要知道一个值是什么类 ...
- [LeetCode题解]876. 链表的中间结点 | 快慢指针
解题思路 使用快慢指针.这里要注意的是,while 的条件会影响当中间节点有两个时,slow 指向的是第一个,还是第二个节点. // 返回的是第一个 while(fast.next != null & ...
- Java 微信端评论表情处理
1,工具包下载:https://github.com/vdurmont/emoji-java 2,文本保存时处理:EmojiParser.parseToHtmlHexadecimal(str) 3,文 ...
- C++中class和struct区别
1.存储不同 结构体使用栈存储(Stack Allocation),而类使用堆存储(Heap Allocation). 栈的空间相对较小.但是存储在栈中的数据访问效率相对较高. 堆的空间相对较大.但是 ...
- Stream流的这些操作,你得知道,对你工作有很大帮助
Stream流 Stream(流)是一个来自数据源的元素队列并支持聚合操作: 元素是特定类型的对象,形成一个队列. Java中的Stream并不会存储元素,而 是按需计算. 数据源 流的来源. 可以是 ...
- [工具推荐]制作基于Dash的本地文档方便搜索文档api和内容
[版权声明]:本文章由danvid发布于http://danvid.cnblogs.com/,如需转载或部分使用请注明出处 最近在看es的文档,发现查起api来真的很麻烦,很多现在开源的文档都没有查询 ...
- php进阶学习-单例设计模式
什么是单例模式(singleton)? 在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点. 单例模式的特点 一个类只有一个实例 私有克隆 ...
- Java中的单例模式最全解析
单例模式是 Java 中最简单的设计模式之一,它是指一个类在运行期间始终只有一个实例,我们就把它称之为单例模式.它不但被应用在实际的工作中,而且还是面试中最常考的题目之一.通过单例模式我们可以知道此人 ...
- Snap Build Your Own Blocks输入中文解决办法
Snap Build Your Own Blocks输入中文解决办法 Snap! (formerly BYOB) is a visual, drag-and-drop programming lang ...