首页 > 其他分享 >RCE绕过正则表达式_1

RCE绕过正则表达式_1

时间:2024-10-25 09:47:35浏览次数:3  
标签:编码 字符 正则表达式 异或 过滤 RCE 绕过

  • 正则表达式一些常见方法
    • 关于RCE绕过正则表达式的一些常见方法,可以从以下几个方面进行:
    • 1. 利用特殊字符和编码:通过使用如URL编码、Unicode编码、十六进制编码等,可以绕过一些简单的正则表达式过滤。例如,将空格替换为%09、%0b或$IFS等,或者使用反引号(\`)和单引号(')来绕过对某些特殊字符的过滤。
    • 2. 利用正则表达式的回溯限制:正则表达式在处理复杂模式时可能会使用大量的回溯,这可以通过构造特定的输入来使正则表达式进入无限回溯,从而导致拒绝服务攻击(ReDoS)。在某些情况下,可以通过控制回溯的次数来绕过正则表达式的过滤。
    • 3. 利用逻辑运算符:通过使用逻辑运算符如异或(XOR)、或(OR)等,可以将不可打印的字符转换为可打印的字符,从而绕过正则表达式的过滤。例如,两个不可打印的字符异或可能得到一个可打印的字符,这样就可以构造出需要的命令或代码。
    • 4. 利用PHP的特性:在PHP中,可以利用一些语言特性来绕过正则表达式的过滤。例如,使用变量变量($$var)、动态函数调用(call_user_func)等。
    • 5. 利用WAF(Web应用防火墙)的配置错误:WAF的规则通常是基于正则表达式编写的,如果配置不当,可能会存在绕过的可能性。例如,某些WAF可能没有正确处理编码或特殊字符,或者没有考虑到所有的攻击向量。
    • 6. 利用服务器特性:不同的服务器环境可能有不同的解析特性,例如IIS服务器对URL编码的处理可能与Apache不同,这可以被用来绕过WAF的过滤。
    • 7. 无参数RCE:在某些情况下,RCE的利用可能被限制为无参数的函数调用。这时,可以利用PHP内置的无参数函数,如`phpinfo()`、`var_dump()`等,来读取或输出信息。
    • 8. 利用正则表达式的缺陷:有些正则表达式可能存在缺陷,例如没有正确处理特定的字符或模式,这可以被用来绕过过滤。
  • 正则表达式绕过
    • 一些常见的绕过方法:
    • 异或(XOR)绕过:通过异或操作,可以将不可打印的字符转换为可打印的字符,从而绕过正则表达式的过滤。例如,两个不可打印的字符异或可能得到一个可打印的字符,这样就可以构造出需要的命令或代码。可以通过编写脚本来生成所有可能的异或组合,并找到可以绕过正则表达式的字符对 。
    • 取反绕过:取反操作可以将字符转换为其相反的ASCII值,从而绕过正则表达式的过滤。例如,对phpinfo进行取反urlencode编码,可以得到绕过正则的编码字符串 。
    • 或(OR)绕过:与异或类似,或操作可以用来生成可打印的字符,以绕过正则表达式的过滤 。
    •  递增递减运算符绕过:通过使用递增或递减运算符,可以从一个已知的字符开始,生成一系列的字符,包括所有字母和数字,从而绕过过滤 。
    • URL编码和转义字符:使用URL编码或者转义字符来隐藏或转换过滤关键字,例如使用%09代替空格,或者使用反斜杠\\进行转义。
    • 特殊变量和命令替代:使用Shell的特殊变量(如$*、$@)或替代命令(如使用tac代替cat)来绕过关键字过滤。
    • 管道和重定向:利用管道符(|)和重定向符(>、<)来构造复杂的命令,或者使用重定向来绕过空格等字符的过滤。
    • 包含漏洞和伪协议:利用文件包含漏洞或PHP的伪协议(如php://input、data://)来执行命令或读取文件。
    • 编码绕过:使用Base64编码或其他编码方式来隐藏命令或代码,直到执行时才解码执行。
    • 拼接法:通过变量拼接来构造命令,例如设置变量a='fl'和b='ag',然后通过cat $a$b来执行cat flag命令。
    • 正则表达式回溯限制:通过构造特定的输入,使正则表达式进入无限回溯,可能导致拒绝服务攻击(ReDoS),在某些情况下,可以通过控制回溯的次数来绕过正则表达式的过滤。

标签:编码,字符,正则表达式,异或,过滤,RCE,绕过
From: https://blog.csdn.net/S3384806792/article/details/143218919

相关文章

  • Codeforces Round 972 (Div. 2)
    CodeforcesRound972(Div.2)总结A#include<bits/stdc++.h>usingnamespacestd;intn;chara[]={'a','e','i','o','u'};voidsolve(){cin>>n;intx=n/5,y=n%5;for(inti=0;i<5;......
  • CodeForces - 788C - 完全背包
    题目表示(x1*a[1]+x2*a[2]+...+xk*a[k])/((x1+x2+...+xk)*1000)=n/1000,可以推出(x1*a[1]+x2*a[2]+...+xk*a[k])=n*(x1+x2+...+xk),进而得出(x1*(a[1]-n)+x2*(a[2]-n)+...+xk*(a[k]-n))=0,这样处理之后就和我之前......
  • 22. 正则表达式
    一、概述  正则表达式(regularexpression)又称规则表达式,是一种文本模式(pattern)。正则表达式使用一个字符串来描述、匹配具有相同规格的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式的核心功能就是处理文本。正则表达式并不仅限于某一种语言,但是在每种语......
  • JavaWeb合集17-拦截器(Interceptor)和过滤器(Filter)
    十七、拦截器和过滤器在JavaWeb开发中,拦截器(Interceptor)和过滤器(Filter)都是用于在请求处理前后执行某些操作的机制。虽然它们的功能相似,但在实现方式、使用场景和灵活性方面有一些重要的区别。1、拦截器和过滤器的区别及选择1.1拦截器定义:拦截器是Spring框架提供......
  • Codeforces Round 980 (Div. 2)
    CodeforcesRound980(Div.2)总结A简单小学算数题。如果\(b\lea\),直接输出\(a\)。否则,列方程\(a-x=b-2x\),\(x=b-a\),输出\(a-x\),即\(2a-b\)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<c......
  • 第10章-Python正则表达式
    在日常生活中,经常会遇到访问一个新的网站时,只有注册成网站用户才能够登录使用。一个用户在填写注册信息时,通常会要求填写手机号、邮箱等信息,在填写信息的过程中网站会对填写的手机号、邮箱进行验证。那么这个验证的过程是如何实现的呢?其实原理很简单,就是使用正则表达式进行......
  • 2024年资源勘探与地下工程技术国际论坛 (REUET 2024) 2024 International Symposium
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍2024年资源勘探与地下工程技术国际论坛(REUET2024)将作为主会议第六届智能控制......
  • CTFHUB技能树之文件上传——MIME绕过
    开启靶场,打开链接:直接指明是MIME验证新建04MIME.php文件,内容如下:<?phpecho"Ciallo~(∠・ω<)⌒★";@eval($_POST['pass']);?>(这里加了点表情,加带点私货)用burp抓包:将application/octet-stream改成image/png或者jpg和gif符合条件就行:之后再点击“forward”提......
  • [算法题解] Codeforces round 979 --D. QED's Favorite Permutation
    题目链接:https://codeforces.com/contest/2030/problem/D题目:题解:FavotitePermutation即每个数满足i=p[i];此题中,p数组每次询问后保持不变,s根据询问而改变。因此每次需要进行交换的数的位置是相同的,只需要检验s变更后,操作能否满足交换需求与否。故创建需数组need,预处理nee......
  • 红队老子养成记4 - 不要遇到403就放弃,学会403绕过,找到别人找不到的接口!!(全网最多绕过!)
     大家好,我是Dest1ny!今天继续更新我们的redteam系列!这次主要的方向是撕开口子,找接口。接口万一可以未授权或者rce,那妥妥的一个0day到手了啊!也希望大家多多点赞支持!!这对我是最大的鼓励!请求绕过技术与示例详解1.更改请求方法绕过更改请求的HTTP方法(如从GET改为POST、PUT......