首页 > TAG信息列表 > preg

PHP正则的Unknown Modifier错误解决方法

https://www.jb51.net/article/22304.htm   如下正则: $a='2<span><nobr>tóng<span class="h">dòng</span></nobr><br>垌</span>3';echo preg_replace('/<span class="h">[^<]*?</s

[BJDCTF2020]EzPHP post传参>get传参&preg-match绕过&create_function()

<?php highlight_file(__FILE__); error_reporting(0); $file = "1nD3x.php"; $shana = $_GET['shana']; $passwd = $_GET['passwd']; $arg = ''; $code = ''; echo "<br /><font color=red><B

取反、异或绕过preg_match()过滤所有字母数字

捞到代码,在本地搭建,源码(rce.php): <?php error_reporting(0); if(isset($_GET['code'])){ $code=$_GET['code']; if(strlen($code)>40){ die("This is too Long.");

[FBCTF2019]RCEService

知识点1: preg_match()只匹配单行数据,利用%0a绕过,看一个例子: <?php $a=urldecode('%0aflag'); if(preg_match('/^.*(flag).*$/',$a)){ echo '匹配到了'; } else echo "没匹配到"; ?> 运行会输出没匹配到,这适合传参是get传参,因为%0a经过urldecode后会变成换行符,preg_ma

[GXYCTF2019]禁止套娃 wp(没写完)

这道题的思路是使用githack工具扫描目标ip/.git,得到index.php,进行代码审计,得到flag   git源码泄露的原因: 开发人员在开发时,常常会先把源码提交到远程托管网站(如github),最后再从远程托管网站把源码pull到服务器的web目录下,如果忘记把.git文件删除,就造成此漏洞。利用.git文件恢复处

js 实现类似php preg_match_all 函数的函数封装

function matchAll (data, exp) { var regex = exp; var Regex = new RegExp(regex, 'mg'); var Matches = data.match(Regex); matchesArray = new Array(); for (var i in Matches) { ngRegex = new RegExp(regex); ngMatche

ThinkPHP(2-rce)任意代码执行漏洞复现及原理

漏洞详情: 使用了危险函数:preg_replace的/e模式匹配路由: preg_replace 函数执行一个正则表达式的搜索和替换。 preg_replace ( mixed $pattern , mixed $replacement , mixed $subject  ) preg_replace(‘正则规则’,‘替换字符’,‘目标字符’) $pattern: 要搜索的模式,可以是字符

buuctf初学者学习记录--web第12题

[GXYCTF2019]Ping Ping Ping 打开靶场 就只有一个提示,直接按照提示进行测试 会返回ping ip的结果,联想到另外一道题,里面介绍了管道符的使用 [ACTF2020 新生赛]Exec 尝试直接使用管道符 使用ls查看目录下的文件,尝试访问flag.php 根据提示,应该是空格被过滤了,需要绕过空格 命

[GXYCTF2019]禁止套娃 WP

知识点 目录扫描 关键字绕过 无参RCE 做题经过 看到题目一脸懵,只有一句话:flag在哪里呢?,随便输入flag.php发现没有404,说明flag就在当前目录下,然后就没思路啦。看WP发现要进行目录扫描,使用dirsearch进行目录扫描,由于出现大量429,所以加上-s 2(这个数字视情况可大可小),扫描出git目录,存

sqli-labs_Less21-28

珍惜现在,活在当下,行在今日。 Less-21 1.直接用我们知道的用户名密码都为:admin的进行尝试,发现: 2.发现Cookie为:uname = YWRtaW4= 说明对其进行了base64编码,那就编码看看:在线编码解码 YWRtaW4=就是admin,确实是base64编码,那就是说构造的语句也要进行base64编码。 还是在Cookie中构

SQL注入 绕过and和or过滤

SQL注入 绕过and和or过滤 1.基础知识介绍 1.MySQL中的大小写不敏感,大写与小写一样。 2.MySQL中的十六进制与URL编码 3.符号和关键字替换and – &&、or–|| 4.内联注释与多行注释 /*! 内联注释*/ /*多行注释*/ 2.去除and和or的代码分析 preg_replace(mixed $pattern,mixed $

PHP preg_match(): Unknown modifier '/'

因为/ 斜线是特殊字符需要转义/ $url = $request->get('url'); $path = dirname(APP_PATH).'/data/monitor_hosts.txt'; $b = File::someRow($path, function($host) use ($url) { $pat = '/^http(s)?:\/\/'.$host.'.*$/'; preg_match($p

[xctf]ics-05伪协议读取源码&&preg_replace() /e漏洞命令执行

ics-05 打开没有任何显示和可操作的点 先dirsearch没结果 后来发现上方的选项卡竟然是可以点的 有一个跳转 http://111.200.241.244:49357/index.php?page=index 终于可以勇敢get提交参数了 由于知道的东西太少了 故而试试可不可以通过伪协议读取 http://111.198.29.45:4474

preg_match用法

(PHP 4, PHP 5, PHP 7, PHP 8) preg_match — 执行匹配正则表达式 说明 preg_match(     string $pattern,     string $subject,     array &$matches = null,     int $flags = 0,     int $offset = 0 ): int|false 搜索subject与pattern

preg_match_all用法

(PHP 4, PHP 5, PHP 7, PHP 8) preg_match_all — 执行一个全局正则表达式匹配 说明 preg_match_all(     string $pattern,     string $subject,     array &$matches = null,     int $flags = 0,     int $offset = 0 ): int|false|null

php判断字符串是否包含指定字符串

preg_match $url = "https://www.baidu.com/api/users"; if (preg_match('/api/', $url)) { return "包含"; } else { return "不包含"; } strpos $url = "https

php处理微信名称过滤emoji特殊符号

public function filterNickname($nickname){ $nickname = preg_replace('/[\x{1F600}-\x{1F64F}]/u', '', $nickname); $nickname = preg_replace('/[\x{1F300}-\x{1F5FF}]/u', '', $nickname);

preg_match函数绕过

<?php error_reporting(0); if(!isset($_GET['code'])){ highlight_file(__FILE__); }else{ $code = $_GET['code']; if(preg_match("/[A-Za-z0-9_$@]+/",$code)){ die('fighting!'); } eval($code)

使用 PHP 正则表达式“preg_match”检查日本内容输入

//平假名输入检查 if(!preg_match('/^[ぁ-ん]+$/u', $val)){ //error処理 } //片假名输入检查 if(!preg_match('/^[[ァ-ン]|ー]+$/u', $val)){ //error処理 } //邮件 if(!preg_match('/^[a-zA-Z0-9_\.\-]+@(([a-zA-Z0-9_\.\-]+\.)+[a-zA-Z0-9]+$)/', $val)){ /

无参数RCE

 [GXYCTF2019]禁止套娃 <?php include "flag.php";//执行并包含flag.php echo "flag在哪里呢?<br>"; if(isset($_GET['exp'])){//以get方式提交exp,非空且为字符串 if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GE

RCE和preg_match绕过

首先以题为例  进来后是这个界面 题目告诉我们用json格式所以我们输入{"cmd":"ls"}查看有啥文件 发现有index.php这个文件里面有源码,这个题目一开始是就给了源码 <?php putenv('PATH=/home/rceservice/jail'); if (isset($_REQUEST['cmd'])) {   $json = $_REQUEST['cmd'];

[GXYCTF2019]禁止套娃

    查看源代码、network,什么都没有 直接输入/.git/时返回403,输入/.git/head可以下载文件,发现git泄漏 使用GitHack下载源码 <?php include "flag.php"; echo "flag在哪里呢?<br>"; if(isset($_GET['exp'])){ if (!preg_match('/data:\/\/|filter:\/\/|php:\/

preg_match()绕过的问题总结

最近参加羊城杯,遇到了一道题本来的思路是绕过preg_match()函数读取secret.php文件,然后从secret.php中给的函数构造pop链使用反序列化的知识点进行命令执行,从而得到flag 但是问题是第一步就出现了问题,绕过preg_match()就绕不过去记录一下:我搜索到的常用的绕过方法有:1.数组绕过,即传

Less-25 preg_replace2

Less-25:   核心语句:                     各种回显也均有。     通过blacklist,我们可以发现,本题屏蔽了and和or。   preg_replace函数中正则表达式后面的i是一个修饰符,代表正则匹配时不区分大小写。        我们也发现,该函数未进行重复替换。所以,我们

thinkphp-2x-rce 代码执行

thinkphp-2x-rce 代码执行 漏洞描述 ​ ThinkPHP框架 - 是由上海顶想公司开发维护的MVC结构的开源PHP框架,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。 ThinkPHP ThinkPHP 2.x版本中,使用preg_replace的/e模式匹配路由导致用户的输入参数被插入双