admin管理员组

文章数量:1794759

ctfshow web入门 PHP特性学习笔记91

ctfshow web入门 PHP特性学习笔记91

web 91

payload: ?cmd=php%0a1 

show_source(__FILE__); include('flag.php'); $a=$_GET['cmd']; if(preg_match('/^php$/im', $a)){ if(preg_match('/^php$/i', $a)){ echo 'hacker'; } else{ echo $flag; } } else{ echo 'nonononono'; }

^表示匹配开始,$表示匹配结束

/i 表示匹配的时候不区分大小写;

/m 表示多行匹配,什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号

 首先需要匹配到的是一行php,因为有/m,所有可以带换行符,第一次匹配到第一行php就算匹配成功,进行下一轮正则。

就可以放过,进行下一次的匹配,第二次的匹配不带/m所以可以匹配到所有的字符,匹配到的是:

php

11

因此不满足正则条件,下放到else中输出flag

本文标签: 学习笔记入门特性CTFSHOWweb