正则表达式匹配题
时间:2019-08-18
本文章向大家介绍正则表达式匹配题,主要包括正则表达式匹配题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
正则表达式匹配题
靶场地址:http://**.**.***.**:8010/re/?id=1。
<?php $key='flag{********************************}'; $Regular=preg_match("/zkaq.*key.{2,9}:\/.*\/(key*key)/i", trim($_GET["id"]), $match); if( $Regular ){ die('key: '.$key); }
代码解释:
preg_match(正则表达式,匹配的字符串)
匹配第一个匹配正则的子字符串,未找到返回0,找到返回1
trim($_GET["id"]) 接受ID传参过来的字符串
if( $Regular ){ die('key: '.$key); }
if (1){}执行;
if(0){}不执行;
die();输出一条消息,并退出当前脚本。
该函数是 exit() 函数的别名。
解题思路:本题需要匹配的字符串的字符串符合正则表达式才会返回flag。
正则表达式解释:
PHP的正则表达式要写在/ /之间。 .:匹配除换行符 \n 之外的任何单字符。 *:匹配前面的子表达式零次或多次。 {n,m}: m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooood" 中的前三个o。请注意在逗号和两个数之间不能有空格。 \: 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。 i:标记指定不区分大小写。
/zkaq.*key.{2,9}:\/.*\/(key*key)/i
拆分讲解这个正则表达式
1.
/zkaq.*/:表示”zkaq”后面有0-N个除换行符 \n 之外的任何单字符(N为非负整数)。
zkaq(我可以理解为后面可以没跟着字符)
2.
/key.{2,9}/:表示”key”后面有2-9个除换行符 \n 之外的任何单字符。 keyhello(我可以在”key”后添加2-9个字符)
3.
/ :\/.*\/ /:第一个”:”为字符冒号,”\/”为斜杠”/”的转译,”.*”表示后面有0-N个除换行符 \n 之外的任何单字符(N为非负整数)。 ://(没什么可说的,我可以不添加字符)
4.
/(key*key)/:表示”ke”和”key”之间有0-N个字符”y”(N为非负整数)。 keykey(我可以不添加字符)
组合:
zkaqkeyhello://keykey
Unicode编码一下:
zkaqkeyhello%3A//keykey
原文地址:https://www.cnblogs.com/sx2960/p/11371898.html
- css3响应式布局设计——回顾
- Windows Phone 7 实战第二天 二维码QRcode
- Python-面向对象编程
- SQL Server 2012将与Hadoop无缝集成
- 系统性能优化一例
- Android中include标签的使用
- css3弹性盒子模型——回顾。
- confluence与jira账号对接、查看到期时间及问题总结
- 物联网、人工智能时代来临五大隐忧不可不提防
- Contact Manager Web API 示例[1]CRUD 操作
- 3个域名交易:fde.com11万被秒
- 新手指南OpenStack:Nova的基础知识
- Python-装饰器详解
- Contact Manager Web API 示例[2] Web API Routing
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 数据结构实验完结撒花之内部排序比较
- Codeforces Round #615 (Div. 3) F. Three Paths on a Tree
- Matlab 内联函数及匿名函数
- 渗透测试 | 内网信息收集
- 浅谈 CSS 的用法
- PAT (Advanced Level) Practice 1049 Counting Ones (30分)
- 用递归的思想实现二叉树前、中、后序迭代遍历
- 利用WAF进行拒绝服务攻击
- leetcode树之从根到叶的二进制数之和
- Vue3 模板编译原理
- leetcode树之从上到下打印二叉树
- leetcode树之二叉搜索树的最近公共祖先
- leetcode树之从翻转二叉树
- Linux常见的持久化后门汇总
- 一篇文章带你使用 Python搞定对 Excel 表的读写和处理(xlsx文件的处理)