第一个最简单的php反序列化;第二个直接连蚁剑;第三个PCRE回溯绕过正则表达式preg_match;第四个union联合注入(双写绕过);第五个直接code=system('ca''t /f*')或者code=system('strings /f*')【预期解】;第六个user.ini里传base64的php://filter伪协议,然后传base64一句话木马;第八个fuzz会发现中括号和花...
源代码有两个关键函数,一个是正则表达式函数 preg_match() ,一个是危险函数 eval() preg_match() 作为黑名单,屏蔽关键字 flag、system、php eval() 则是获取 flag 的关键所在 以PHP代码 角度,我们一般想到的采用拼接方式绕过黑名单,还需要考虑是否使用函数绕过、函数替代 (1)字符拼接 我们获取 flag 需要执行的...
在反序列化过程中,如果类里的对象被preg_match不区分大小写过滤了,可以尝试以下方法绕过:1. 使用双引号转义字符(\")。当一个字符串中包含反斜杠时,它会被视为转义字符。因此,可以使用两个反斜杠来表示单个反斜杠,从而避免正则表达式的匹配。例如,"cat" 不会被匹配为 "CAT"。2. 将问题中的PHP代码修改一下,...
前言:由于长度限制,且不像其他题目告知flag.php的内容, 笔者并没有求出flag,绕过思路可参考,也欢迎ctf大佬指点迷津。 题目如下,解析flag.php中的flag变量 <?phpinclude("flag.php");if(isset($_GET['code'])){$code=$_GET['code'];if(strlen($code)>20){die("Too Long.");}if(preg_match("/[A-...
案例3:PHP-正则preg_match绕过-常考点 #ctf中 preg_match 绕过技术: ---参考:http://t.zoukankan.com/v01cano-p-11736722.html和https://www.codercto.com/courses/d/852.html ---int preg_match ( string$pattern, string$subject[, array &$matches [, int $flags = 0 [, int $offset = 0 ]...
题意preg_match是匹配到了再返回,则可以通过返回 FALSE 进行绕过。但如何返回False,先来看下正则是如何匹配的。先来看下题目的正则解析树如下: 因为使用的是非贪婪模式,优先匹配"xiaojijiao" 字符,不匹配再进行回溯。回溯过程会造成些许性能消耗,这时候就引入了最大回溯次数限制。可以通过 ini_get('pcre.backtrack...
if(!preg_match('/[a-z0-9]/is',$_GET['shell'])) { eval($_GET['shell']); } //如果shell中不还有字母和数字,则可以执行eval语句 1. 2. 3. 4. 5. 异或绕过 异或的符号是^,是一种运算符。 1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 ...
if(!preg_match('/flag/i',$c)) //这里的i是大小写的意思 { eval($c); } ?> 我们看上面的if函数里面写的东西,他是禁止出现flag这个字符串,所以我们可以直接使用*来进行绕过。但是这里我们不仅可以使用cat fla*.php也可以使用tac命令来输出这个fla*.php,命令为tac fla*php. ...
这里首先是一个代码审计,代码部分比较简单,大佬肯定一眼就知道这里只需要绕过preg_match正则和__wakeup函数即可,因为这里weakup会将马上就要反序列化的字串中file给你替换为index,这样就回到现在的页面了。 首先是正则绕过:/[oc]:\d+:/i 这段正则的意思是匹配所有的以o、c、O、C开头,加冒号:,加数字、再加...
过滤了很多,而且结合preg_match("/.*f.*l.*a.*g.*/", $ip)基本是不可能使用cat fl*.php这种正则绕过来查看了。 解法一: 虽然过滤了bash,但没过滤sh,可以使用下面的方法: echo Y2F0IC9mbGFn|base64 -d|sh==>cat /flag 1. payload: