前言 其实yodu模板友链页面很早就考虑直接写友链者的邮箱,然后模板自动输出gravatar头像,然而因为模板采用的是正则匹配输入的内容,然后进行替换格式,然而匹配的内容如何进行MD5加密呢?...这个问题困扰我很久了,今天看到友链禾令奇的文章,瞬间解决了我的疑问,不愧是dalao 代码 php如何对preg_replace匹配的内容进行MD5/base64加密?
2019年春节已过,今天是上班第一天,还得翻一翻之前没有看完的PHP源码。 今天聊的是字符串顺序打乱函数str_shuffle。这个函数本身使用频率并不高。但是,其内部实现还是非常有趣的。...自己实现 如果在没有看PHP源码内部实现之前,如果使用php实现内部字符串打乱顺序的操作,我能想到的是下面几种方式。...循环随机数 使用随机数,可以有随机取字符串的字符拼接,或者顺序取出,放到随机数自定的位置。这两种方式都涉及到随机数重复的情况,需要去重。 ? 这种方式的重点在于生成不重复的随机数。...切分成数组然后打乱顺序 ? 用数组打乱顺序的方式实现其实是有些“作弊”嫌疑。 PHP内部实现 来看看PHP内部如何实现。 ?...但是php内部的实现,都是n次循环后结束。在性能上肯定比需要去重的随机数方法要好。 两个方法的出发点都一样,但是稍微的不一样就可以带来很大的提升。
function htmlspecialchars_uni($message) { $message = preg_replace("#&(?!...;', $message); // Replace the rest if($this->mycode_cache['standard_count'] > 0) { $message = preg_replace...mycode_cache['nestable'] as $mycode) { while(preg_match($mycode['find'], $message)) { $message = preg_replace...[video=youtube]http://test/test#[url]onload=alert();//[/url]&1=1[/video] 首先跟入到函数/inc/class_parse.php...如果我们在上传的xml文件中构造name为tttttttttttttttttttttttttt.php.css时,name在存入数据库时会被截断,并只保留前30位,也就是tttttttttttttttttttttttttt.php
function htmlspecialchars_uni($message) { $message = preg_replace("#&(?!...Replace the rest if($this->mycode_cache['standard_count'] > 0) { $message = preg_replace...while(preg_match($mycode['find'], $message)) { $message = preg_replace...[video=youtube]http://test/test#[url]onload=alert();//[/url]&1=1[/video] 首先跟入到函数/inc/class_parse.php...如果我们在上传的xml文件中构造name为tttttttttttttttttttttttttt.php.css时,name在存入数据库时会被截断,并只保留前30位,也就是tttttttttttttttttttttttttt.php
> 源码分析 我们输入的内容会被执行并嵌入在HTML页面中;$_GET['name']会触发js恶意代码并嵌入HTML页面中。 测试 正常页面 ?...结果发现:我们在输入text框中写入了一个Js代码,代码直接被执行并嵌入在HTML页面中;众所周知,Js代码和HTML代码直接暴露在客户端,一旦写入的Js代码可以被执行并嵌入在HTML页面中即视为存在XSS...> xxx测试该标签的具体输出位置 xss利用方式 Cookie窃取 Cookie时能够让网站服务器吧少量的文本数据存储到客户端的硬盘或内存中,用于维持HTTP无状态协议导致的可持续网站会话; 如何产生...当我们访问某网站,网站服务端由于HTTP时无状态协议,而客户端和服务器无法直接判断是否来自同一个客户源,为此当用户访问第一次网站后并登录等操作,服务端会返回Cookie给客户端的硬盘或内存中存留 如何使用...php //php防注入和XSS攻击通用过滤.
php正则表达式实现替换的方法:首先创建一个PHP示例文件;然后定义一个字符串;最后通过正则表达式“preg_replace("/[0-9]/","",$str);”去掉字符串中所有数字即可。...PHP正则替换preg_replace函数的使用 php $str="as2223adfsf0s4df0sdfsdf"; echo preg_replace("/0/","",$str);//去掉0字符,此时相当于 replace的功能, preg_replace...php $str="acsdcsscsdcd"; echo preg_replace("/不管包住的是什么都去掉其中. 表示任意字符, * 表示任意个数 现在我们来改动一下,如果不想是任何个数呢?
function htmlspecialchars_uni($message){ $message = preg_replace("#&(?!...Replace the rest if($this->mycode_cache['standard_count'] > 0) { $message = preg_replace...[video=youtube]http://test/test#[url]onload=alert();//[/url]&1=1[/video] 首先跟入到函数/inc/class_parse.php...如果我们在上传的xml文件中构造name为tttttttttttttttttttttttttt.php.css时,name在存入数据库时会被截断,并只保留前30位,也就是tttttttttttttttttttttttttt.php...8.jpg 可以看到我们成功的写入了php文件 3.
('/^http:\/\//i', '', $domain); $domain = preg_replace('/^www\....使用 mail() 发送邮件 之前我们提供了如何使用 Mandrill 发送邮件的 PHP 代码片段,但是如果你不想使用第三方服务,那么可以使用下面的 PHP 代码片段。...> 45. youtube 下载链接生成器 使用下面的 PHP 片段可以让你的用户下载 Youtube 视频 <?...() { $youtube_link = $_GET['youtube']; $youtube_page = file_get_contents($youtube_link);...$v_id = str_between($youtube_page, "&video_id=", "&"); $t_id = str_between($youtube_page, "&t=",
最近我们小组正在做一个PHP代码审计的项目,供大家学习交流,我们给这个项目起了一个名字叫 PHP-Audit-Labs 。...preg_replace:(PHP 5.5) 功能 : 函数执行一个正则表达式的搜索和替换 定义 : mixed preg_replace ( mixed $pattern , mixed $replacement...() 将 $replacement 当做php代码来执行 漏洞解析 这道题目考察的是 preg_replace 函数使用 /e 模式,导致代码执行的问题。...大家可以参考 W3Cschool 上的解释: 反向引用 对一个正则表达式模式或部分模式 两边添加圆括号 将导致相关 匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储...实例分析 本次实例分析,我们选取的是 CmsEasy 5.5 版本,漏洞入口文件为 /lib/tool/form.php ,我们可以看到下图第7行处引用了preg_replace ,且使用了 /e 模式
PHP中如何正确统计中文字数?...PHP中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了 strlen,mb_strlen,mb_strwidth 这个三个函数去测试统计字符串的长度,看看把中文算成几个字节: echo strlen...) . ""; # 输出 5 echo mb_strwidth("二货ABC") . ""; #输出 7 从上面的测试,我们可以看出:strlen 把中文字符算成 3 个字节,mb_strlen 不管中文还是英文...php echo mb_strlen(preg_replace(array("'<(.*?)
下面是搜索到的关于/e的解释: e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式,此为PHP专有参数,例如preg_replace函数。...PHP在线沙箱 测试一下这个preg_replace()函数,代码如下: php @preg_replace('/test/e','print_r("测试成功");','test'); 159791341.png 测试发现从php4.4.9-php5.6.29都是可以执行的,...如果以挖漏洞的思路来看的话,应当整理思路如下: 1.确定php版本,如果版本在php4.4.9-php5.6.29之中 2.查找关键函数是否调用哪了preg_replace()函数 3.查看该函数所在的地方是否存在...而Dispatcher.class.php就是规定如何来解析路由的这样一个类。
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。...", "../", "./", "//" ), '', $string ); $no = '/%0[0-8bcef]/'; $string = preg_replace...( $no, '', $string ); $no = '/%1[0-9a-f]/'; $string = preg_replace ( $no, '', $string...); $no = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; $string = preg_replace ( $no, '', $...有些黑客会伪造FILE数组上传,如何辨别:move_upload_file()可以判断是不是真实文件。
= 之外的字符 然后.html 结束的字符串 所以不管你加什么,都只会匹配 /1.html 这一部分,那么如何解决这一问题呢?...虫子不懂伪静态规则,不过用php到是解决了这个问题,虫子提供的方法非常的简单粗暴,不知道有没有Bug的哦 本段代码通用代码,直接把下面代码放入echo_log.php和page.php第一行就可以了 php $page=isset($params[5])?intval($params[5]):1; $ymurl=$_SERVER['HTTP_HOST']....$_SERVER['REQUEST_URI']; $emurl=preg_replace('/(http://|https://|)*/','',Url::log($logid)); if($emurl...> 如何没有修改过em内核路径的朋友们建议使用以下代码(速度更快),如果有修改过就只能使用上面代码 php $page=isset($params[5])?
= 之外的字符 然后.html 结束的字符串所以不管你加什么,都只会匹配 /1.html 这一部分,那么如何解决这一问题呢?...舍力不懂伪静态规则,不过用php到是解决了这个问题,舍力提供的方法非常的简单粗暴,不知道有没有Bug的哦 本段代码通用代码,直接把下面代码放入echo_log.php和page.php第一行就可以了...php$page=isset($params[5])?intval($params[5]):1;$ymurl=$_SERVER['HTTP_HOST']....$_SERVER['REQUEST_URI'];$emurl=preg_replace('/(http://|https://|)*/','',Url::log($logid));if($emurl!...> 如何没有修改过em内核路径的朋友们建议使用以下代码(速度更快),即没有按此教程《emlog去除分类目录前的sort》修改过的,如果有修改过就只能使用上面代码 <?
temp=4e11输出4 addslashes() 使用反斜线引用字符串 在单引号 双引号 反斜线 与NUl 前面加上反斜线 preg_replace() /e PHP5.5.0以下可用,5.5.0及以上版本已经被弃用了...执行一个正则表达式的搜索和替换 preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit =...如果subject是一个数组, preg_replace()返回一个数组,其他情况下返回一个字符串。 webshell代码 php @preg_replace(``"/[pageerror]/e"``,$_POST[``'error'``],``"saft"``); 关于GPC和REQUESTS 字母出现顺序越靠后则数据加载的顺序越靠前...; echo "\n"; $file = "\$option='asa';"; // $file = preg_replace('|\$option=\'.*\';|', "\$option='$str
PHP中如何正确统计中文字数?...PHP中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了 strlen,mb_strlen,mb_strwidth 这个三个函数去测试统计字符串的长度,看看把中文算成几个字节: echo strlen...8') . ""; # 输出 5 echo mb_strwidth("二货ABC") . ""; #输出 7 从上面的测试,我们可以看出:strlen 把中文字符算成 3 个字节,mb_strlen 不管中文还是英文...php echo mb_strlen(preg_replace(array("'<(.*?)
最近我们小组正在做一个PHP代码审计的项目,供大家学习交流,我们给这个项目起了一个名字叫 PHP-Audit-Labs 。...下面是 第8篇 代码审计文章: Day8 - Candle 题目叫蜡烛,代码如下 preg_replace:(PHP 5.5) 功能 : 函数执行一个正则表达式的搜索和替换 定义 : mixed preg_replace...() 将 $replacement 当做php代码来执行 漏洞解析 这道题目考察的是 preg_replace 函数使用 /e 模式,导致代码执行的问题。...大家可以参考 W3Cschool 上的解释: 反向引用 对一个正则表达式模式或部分模式 两边添加圆括号 将导致相关 匹配存储到一个临时缓冲区 中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储...5.5 版本,漏洞入口文件为 /lib/tool/form.php ,我们可以看到下图第7行处引用了preg_replace ,且使用了 /e 模式。
SQL语句 第一题SQL语句 通过源代码可以更加清晰的理解payload的构造思路 ---- 第五关 基于GET单引号双注入 存在注入点判断 输入单引号测试,有报错信息,返回信息和第一关错误信息一样 不管输入...users -C username,password --dump --threads 10 --batch 第九关 基于GET单引号基于时间盲注 存在注入点判断 加上反斜杠发现页面并无变化 猜测不管语法对错页面都没有变化...= 3>'; } } else { echo "Please input the ID as parameter with numeric value";} 布尔注释掉了输出错误信息,而时间盲注不管对错页面都是...= preg_replace('/[--]/',"", $id); //Strip out -- $id= preg_replace('/[#]/',"", $id); //Strip...out # $id= preg_replace('/[\s]/',"", $id); //Strip out spaces $id= preg_replace('/[\/\\\\]/',
一、标签自动建立链接 将以下代码添加到当前主题的functions.php文件中保存: /* 自动为文章内的标签添加内链开始 */ $match_num_from = 1; //一篇文章中同一个标签少于几次不自动链接...$case, '$1$2%&&&&&%$4$5', $content); $content = preg_replace( '|(<img...$case; $content = preg_replace($regEx,$url,$content,$limit);...二、指定关键词自动内链 将以下代码添加到当前主题的functions.php文件中保存: /* 文章指定关键词添加内链开始 */ function replace_text_wps($text){...'replace_text_wps'); 大家自行把代码中的关键词与链接换成自己的,需要其他关键词复制那一行代码即可,非常方便,这个方法有个缺陷就是不能控制关键词锚文本次数,只要在文章中出现的关键词不管几次都会加上链接
领取专属 10元无门槛券
手把手带您无忧上云