靶场地址: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。
/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://keykeyUnicode编码一下:
zkaqkeyhello://keykey
转载于:https://www.cnblogs.com/sx2960/p/11371898.html
相关资源:JAVA上百实例源码以及开源项目