preg_match函数在PHP中用于执行一个正则表达式匹配。在CTF(Capture The Flag)竞赛中,攻击者常常需要绕过preg_match的安全检查来执行恶意代码或获取敏感信息。以下是一些常见的绕过方法: 正则表达式回溯限制绕过: PHP为了防止正则表达式的拒绝服务攻击(ReDoS),给PCRE(Perl Compatible Regular Expr
preg_match('/system|eval|...|flag/i',$str1),preg_match函数用来匹配字符串,如果str1包含'/某些用竖线分割的字符/'中的内容,则返回true。参数i表示大小写不敏感。 preg_replace("/please_give_me_flag/ei",$_POST['task'],$_POST['flag']),对于这个函数,可以简要看成preg_replace($a,$b,$c),...
在反序列化过程中,如果类里的对象被preg_match不区分大小写过滤了,可以尝试以下方法绕过:1. 使用双引号转义字符(\")。当一个字符串中包含反斜杠时,它会被视为转义字符。因此,可以使用两个反斜杠来表示单个反斜杠,从而避免正则表达式的匹配。例如,"cat" 不会被匹配为 "CAT"。2. 将问题中的PHP代码修改一下,...
if(!preg_match('/[a-z0-9]/is',$_GET['shell'])) { eval($_GET['shell']); } 在eval中执行,相当于用传入内容创建了一个新的php文件,也就是说<?= 这些也是可以用的 在没有字母的情况下,php5可以通过 $_($__); 这个$_,会被php按照callable$callback,处理,字符串会寻找对应的函数执行,数组...
---也可以添加换行符://indexl.php?num=1%0a 案例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...
preg_match() 作为黑名单,屏蔽关键字 flag、system、php eval() 则是获取 flag 的关键所在 以PHP代码 角度,我们一般想到的采用拼接方式绕过黑名单,还需要考虑是否使用函数绕过、函数替代 (1)字符拼接 我们获取 flag 需要执行的命令为 ?c=system("cat flag.php");//但这里有两个关键字被屏蔽 ...
考点一:intval函数传入非空数组时会返回1 详情可以查一下PHP手册。【https://www.php.net/manual/zh/function.intval.php】 考点二:preg_match()只能处理字符串,当传入的是数组时将会返回false,详情也可以查一下PHP手册。例题:include("flag.php");highlight_file(__FILE__);if(isset($_GET['num']))...
加上%00是因为username和password都是私有变量,变量中的类名前后会有空白符,而复制的时候会丢失且本题的php版本低于7.1 各种绕过 绕过部分正则 preg_match('/^O:\d+/')匹配序列化字符串是否是对象字符串开头。我们在反序列化中有两种方法绕过: 1.利用加号绕过 代码语言:javascript 代码运行次数:0 运行 AI代码...
PHP特性相关考点 一、考点:php正则表达式的匹配模式差异。例题:show_source(__FILE__);include('flag.php');$a=$_GET['cmd'];if(preg_match('/^php$/im', $a)){ #/i表示不区分大小写,/m表示多行匹配 if(preg_match('/^php$/i', $a)){ echo 'hacker'; } else{ echo...
可以查看到flag.php位置,在使用cat命令读取flag.php文件内容。payload: ?ip=127.0.0.1%0acat flag.php trim() 函数 trim() 函数移除字符串两侧的空白字符或其他预定义字符。 一般是用来去除字符串首尾处的空白字符(或者其他字符),一般在用在服务端对接收的用户...