%27(%5c是反斜杠),之后在数据库查询前由于使⽤了GBK多字节编码,即 在汉字编码范围内两个字节会被编码为⼀个汉字。...27(%5c是反斜杠),然后%df%5c正好属于gbk的汉字编 码范围,经过iconv转换到utf-8编码转换后变成了汉字“運”,从⽽吞掉了反斜杠使得单引 号逃脱出来。...UTF-8转GBK 这⾥我们思考下“錦”这个字,它的utf-8编码是e98ca6,它的gbk编码是%e5%5c,⽽上⾯ 提到过反斜杠\正好为%5c。...反斜 杠被转义了(%5c%5c),从⽽单引号逃逸出来就会引发注⼊漏洞。...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
条件 后台使用GBK编码的时候,存在着看不见的ascii码转换为GBK编码的转换过程,可以使用宽字节注入。 原理 编码转换存在着单字符被合并的情形 反斜杠对应url编码%5c,是单字节的。...在%5c前再加入一个单字节字符%dd(范围可以是81到FE之间),就成了%dd%5c 而当后端使用GBK编码的时候,会将合理的两个单字节ANSCII字符解析成一个双字节的GBK编码字符。
报错的原因就是多了一个单引号,而单引号前面的反斜杠不见啦。这就是mysql的特性,因为gbk是多字节编码,它认为两个字节代表一个字符,所以%df和后面的%5c变成了汉字“運”,而’逃逸了出来。...故只要低位的范围中含有0x5c的编码,就可以进行宽字节的注入 利用mysql_real_escape_string解决问题 一些cms把addslashes替换为mysql_real_escape_string...报错说明我们錦被iconv从utf-8转换成gbk后,变成了%e5%5c,而后面的'被addslashes变成了%5c%27,这样组合起来就是%e5%5c%5c%27,两个%5c就是\,正好把反斜杠转义了...利用的是将\转移掉。 利用iconv将gbk转换成utf-8,则可以直接用宽字节注入的姿势来。gbk汉字2字节,utf-8汉字是3字节,若把gbk转换成utf-8,则php会每两个字节一转换。...只要我们把前端html/js/css所有编码设置成gbk,mysql/php编码设置成gbk,就不会出现乱码问题。不用画蛇添足地去调用iconv转换编码,造成不必要的麻烦。
-1'; show tables; # 表名为数字时,要用反引号包起来查询。...',其中\的十六进制是%5c,mysql的GBK编码,会认为%df%5c是一个宽字节,也就是’運’,从而使单引号闭合(逃逸),进行注入攻击 select load_file(concat('\\\\'.../或者\\,因为windwos路径默认使用的是反斜杠\,但是这里如果使用单个反斜杠注入会无效 ?.../i不区分大小写 /s匹配任何不可见字符,包括空格、制表符、换页符等等,等价于[fnrtv] /D如果使用$限制结尾字符,则不允许结尾有换行; 绕过空格过滤可以用${IFS}替换空格,或者用%09代替空格...原文链接:https://blog.csdn.net/qq_62046696/article/details/125965534 PHP花式绕过大全 parse_url函数的解释和绕过 反斜杠绕过正则匹配
3、宽字节注入是利用mysql的一个特性,使用GBK编码的时候,会认为两个字符是一个汉字 二、addslashes()函数 1、addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。...2、预定义字符是:单引号(’),双引号(”),反斜杠(\),NULL 3、实例 <?php $ss=addslashes('aiyou"bu"cuoo'); echo($ss); ?...id=2,返回正常信息 2、判断是否存在注入,在id=2后面加入’,看是否报错,发现单引号被转义了 3、替换反斜杠,反斜杠的GBK编码为%5C,根据GBK编码在前面加上%DE,%DF,%E0。。。...都可以组成一个汉字,从而把反斜杠给‘吃’了 4、成功替换了反斜杠 5、获取数据库列数,order by 4返回正常 192.168.0.104/aiyou/1.php?...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
2.1 只允许白名单中的方法 首先,对于请求的方法,只允许白名单中的方法,也就是说,不是所有的 HTTP 请求方法都可以执行。...如果请求地址中出现双斜杠,这个请求也将被拒绝。...如果请求地址中包含斜杠编码后的字符 %2F 或者 %2f ,则请求将被拒绝。...如果请求地址中包含反斜杠 \ 或者反斜杠编码后的字符 %5C 或者 %5c ,则请求将被拒绝。...正好应了那句鸡汤: ❝你所谓的岁月静好,不过是有人在替你负重前行。 好了,不知道大家有没有 GET 到呢?如果有收获,记得点个在看鼓励下松哥哦~
单引号(') 双引号(") 反斜线() .........这些字符都会被加上反斜线 magic_quotes_gpc的作用:当PHP的传参有特殊字符就会在前面加转义字符''来做一些过滤 单引号和双引号内的一切都是字符串,那我们输入的东西如果不能闭合掉单引号和双引号...就逃逸了 3.1宽字节注入过滤原理 PHP发送请求到mysql时经过一次GBK编码,PHP会将获取到的数据进行魔术引号的处理,因为GBK是双字节编码,所以我们提交的%df这个字符和转译的反斜杠组成了新的汉字...3.2宽字节注入绕过原理 已知我们的提交数据会被加入,的编码为%5c,我们在后面加上%df后变为了%df%5c,变成一个繁体汉字運,变成了一个有多个字节的字符 因为用了gbk编码,使这个为一个两字节,绕过了单引号闭合...数据库使用GBK编码可能存在宽字节注入 传一个字符将反斜杠吃掉成为汉字 大多数时候是看不到是否存在宽字节注入,那就去尝试看是否存在。
访问id=1',页面的返回结果如图4-51所示,程序并没有报错,反而多了一个转义符(反斜杠)。 图4-51 从返回的结果可以看出,参数id=1在数据库查询时是被单引号包围的。...当传入id=1'时,传入的单引号又被转义符(反斜杠)转义,导致参数ID无法逃出单引号的包围,所以一般情况下,此处是不存在SQL注入漏洞的。...宽字节的格式是在地址后先加一个%df,再加单引号,因为反斜杠的编码为%5c,而在GBK编码中,%df%5c是繁体字“連”,所以这时,单引号成功“逃逸”,报出MySQL数据库的错误,如图4-52所示。...select table_name from information_schema.tables where table_schema='test' limit 0,1 此时,由于单引号被转义,会自动多出反斜杠...由于在数据库查询前执行了SET NAMES 'GBK',将数据库编码设置为宽字节GBK,所以此处存在宽字节注入漏洞。 在PHP中,通过iconv()进行编码转换时,也可能存在宽字符注入漏洞。
扩展到世界上所有多字节编码,只要低位的范围中含有0x5c的编码,就可以进行宽字符注入。...将character_set_client设置成binary,就不存在宽字节或多字节的问题了,所有数据以二进制的形式传递,就能有效避免宽字符注入。 B、PHP 编码转换 漏洞示例代码: 测试语句: 錦' 錦这个字:它的utf-8编码是%e9%8c%a6,它的gbk编码是%e5%5c 錦被iconv从utf-8转换成gbk后,变成了%e5%5c,而后面的’被addslashes变成了...%5c%27,这样组合起来就是%e5%5c%5c%27,两个%5c就是\\,正好把反斜杠转义了,导致’逃逸出单引号,产生注入。...0x05 全局防护盲点 1、str_replace函数 过滤单引号等,可能造成注入; 2、stripslashes() 函数删除由 addslashes() 函数添加的反斜杠。
在Android应用中绕过主机验证的小技巧 反斜杠技巧 查看典型的主机验证代码: Uri uri = Uri.parse(attackerControlledString); if("legitimate.com...(如果你测试java.net.URI将显示异常)。...legitimate.com@attacker.com 这是因为apps只解析一次url,虽然受害者应用程序不再解析它,但是信任从不受信任的来源会收到“already parsed”URI地址 远程利用反斜杠技术... 你会注意到,在第一个例子中,所有都\将被替换/,在第二个例子中,它们将被保留编码,反斜杠技巧将不起作用。但仔细研究了intent://计划如何工作后,我找到了一种远程利用它的方法。...简介: https://www.mbsd.jp/Whitepaper/IntentScheme.pdf 所有反斜杠都可以保存在未更改状态,例如URI的哈希部分,这里https://android.googlesource.com
如下面的一条sql语句,这条语句就是一个简单的用来查选得到users表中所有字段的一条语句: select column_name from information_schema.tables where...' 转换为 ' 。...select 1,user(),3--+ (2)将 ' 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27 ,后面的 %5c 会被前面的 %5c 注释掉。...2.addslaches():返回在预定义字符之前添加反斜杠(\)的字符串。预定义字符:' , " , \ 。...下面以IIS为例,一般的SQL注入语句如下所示: Inject=union select 1,2,3,4 将SQL注入语句转换为以下格式。
连接mysql 时,当设置”ser character_set_client=gbk” 时会导致一个编码转换的注入问题,也就是熟悉的宽字节注入 当存在宽字节注入时,%df%27 可把程序中过滤的\ (%5c...id=-1%df’and 1=1%23 时,%df和\ 反斜杠(%5c) 组合 %df%5c 编码后是一个汉字,这时候单引号依然存在,则会闭合成功,形成注入漏洞。...id=5%20and%201=2%df%27%20and%201=2%23 我们提交的语句是 and 1=2 %df'and 1=1%23 原理 %df%27= >(addslashes)>%df%5c...> addslashes函数,将单引号等字符 转义变成\’。
我将解释不同类型的引号字符及其在 shell 脚本中的用法。 有四种不同类型的引号字符: 单引号 ' 双引号" 反斜杠 \ 后引号` 除反冲外,其余三个字符成对出现。 让我们详细看看它们。...[202204081703645.png] 忽略所有特殊字符 如果将所有特殊字符括在单引号中,它们就会失去意义。让我们用例子来看看。...几乎是因为他们也倾向于忽略所有特殊字符,除了: 美元符号 $ 反引号` 反斜杠 \ 由于不会忽略美元符号,因此您可以期望变量名被其值替换。单引号不是这种情况。...3.反斜杠 反斜杠就像在单个字符周围加上单引号。反斜杠“转义”它之前放置的字符。 这意味着反斜杠后面的字符将失去其特殊含义(如果有)。...反引号 此列表中的最后一个是反引号,它具有特殊含义。它用于命令替换。 shell 具有此命令替换功能,其中指定的命令被替换为命令的输出。
可见在'前面加了反斜杠,尝试宽字节注入 原理:mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围)。...我们在过滤 ' 的时候,往往利用的思路是将 ' 转换为 ' (转换的函数或者思路会在每一关遇到的时候介绍)。...因此我们在此想办法将 ' 前面添加的 \ 除掉,一般有两种思路: %df吃掉 \ 具体的原因是urlencode(') = %5c%27,我们在%5c%27前面添加%df,形成%df%5c%27,而上面提到的...将 ' 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27的情况,后面的%5c会被前面的%5c给注释掉。这也是bypass的一种方法。...预定义字符是: 单引号(') 双引号(") 反斜杠(\) NULL 32关只不过是用正则去实现的类似addslashes(),函数的功能。
一、什么是SQL注入 SQL注入漏洞为PHP研发人员所熟知,它是所有漏洞类型中危害最严重的漏洞之一。...select * from hacker where email=0; 该查询语句的作用是通过email查询相应的用户信息,由于将email的值误写为0,在执行结果中可以看到数据库返回了表中的所有内容。...通过表中的转换关系可以看出,在上面的查询语句中,MySQL将数据类型转换为DOUBLE后进行查询,由于STRING转换后的值为0,同时查询条件中的值也为0,所以匹配到了整张表的内容。...MySQL报告出现语法SQL错误,原因是多输入了一个引号,然而前面的反斜杠不见了,一旦出现数据库报错,就说明可以进行SQL注入了。...原因是GBK是多字节编码,PHP认为两个字节代表一个汉字,所以%81和后面的反斜杠%5c变成了一个汉字“乗”,造成反斜杠消失。
例如攻击者发表了一篇带有恶意js代码的文章,那么所有访问该文章的用户都会中招。...stripslashes():删除反斜杠 mysqlrealescape_string(string,connection):函数会对字符串中的特殊符号(\x00,\n,\r,\,‘,“,\x1a)进行转义...(\)与 NULL(NULL 字符)等字符都会被加上反斜线。...当网页使用了GBK编码时,会认为两个字符为一个汉字,例如%df%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围),因此经过转义后,%df%5c(%5c为 \)就会变成一个汉字,把转义符吃掉...为了避免被过滤,将alert(1)转换为ASCII码形式: ? 构造payload如下,成功弹窗: ?
直接用 Java 语言提供的 replaceAll 方法,传入一个正则表达式,直接将完整字符串中所有匹配正则的子串替换为空串。...[用单个反斜杠的结果] 原因很简单,在 Java 字符常量中,反斜杠(\)是一个特殊的字符,被称为 转义字符,它的作用是用来转义后面一个字符,本身不具有实际意义!...因此,不能用下面这种方式直接输出反斜杠: [报错] 如果想要单独输出一个反斜杠,需要再加上一个反斜杠转义: [无报错] 同理,想要输出一个 "\n" 字符串,代码要这么写: System.out.println...[用两个反斜杠的效果] 其实,正确的答案应该是使用 四个反斜杠,因为反斜杠在 Java 和正则表达式中都是转义字符!...在 Java 中,输出 "\n" 字符串需要两个反斜杠和一个 'n',在 Java 的正则表达式中,要给这两个反斜杠分别再分配一个反斜杠进行转义,才能生效。
直接用 Java 语言提供的 replaceAll 方法,传入一个正则表达式,直接将完整字符串中所有匹配正则的子串替换为空串。...用单个反斜杠的结果 原因很简单,在 Java 字符常量中,反斜杠(\)是一个特殊的字符,被称为 转义字符,它的作用是用来转义后面一个字符,本身不具有实际意义!...因此,不能用下面这种方式直接输出反斜杠: ? 报错 如果想要单独输出一个反斜杠,需要再加上一个反斜杠转义: ?...用两个反斜杠的效果 其实,正确的答案应该是使用 四个反斜杠,因为反斜杠在 Java 和正则表达式中都是转义字符! ?...在 Java 中,输出 "\n" 字符串需要两个反斜杠和一个 'n',在 Java 的正则表达式中,要给这两个反斜杠分别再分配一个反斜杠进行转义,才能生效。
使用数据库 查询当前库名 查询数据库所有表名 查询表中所有内容 查询表中指定内容 创建库 创建表(同时要声明表的内容字段) 在表中新增(插入数据内容)...>’,3 into OUTFILE "H.1phpstudy.prolWWW\cms\Sali.Edited..Version\sqlilabs\Less-7\lshell.php"–+ 效果:将php...dnslog.cn’为DNSLOG平台获得的域名 宽字节注入 条件:sql注入解析使用的是gbk编码,utf-8不行 代码分析: addslashes函数将会在一些危险字符(包括’和#)面前加入一个反斜杠...id=%df%27 payload分析:%27为单引号所以addslashes函数会在%27前面加一个\得%df\%27 \的url编码为%5c编码后得到%df%5c%27 %df%5c解码后会得到一个繁体字的运...: mysql_real_escape_string(string, connection)函数会在[\x00],[\n],[\r],[],[’],[”],[\x1a]这七个字符出现的前面加一个反斜杠
content").html(content); 这里还有一个比较重要的信息是编码,我们可以看到页面中的编码是 这里最开始我的想法是通过传入%df%5c...来转义双引号,闭合后一个双引号,这样conten位置就可以任意构造了,但是这里有个问题,因为js中字符串中不可以跨行,除非在行末标注一个反斜杠,于是这种想法卒了。...但是那么既然我们可以传入任意的反斜杠,而且jq的html会把十六进制转义为符号,我们就可以传入十六进制的方式来注入任意符号,比如说尖括号,这里有个小坑,就是html()和document.write不一样...value="submit"> document.forms[0].submit(); 完成攻击 所有条件都成立了...%40%23%24%25%5E%26*()_%2B%7B%7D%7C%3A%22%3C%3E%3F~%60-%3D%5B%5D%5C%3B'.%2F%5C%0D%0A%0D%0Apwnhub%7Bflag
领取专属 10元无门槛券
手把手带您无忧上云