BugKu -- 字符?正则?

字符?正则?

      100

字符?正则?

http://120.24.86.145:8002/web10/

打开链接是一段代码

<?php 
highlight_file('2.php');
$key='KEY{********************************}';
$IM= preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);
if( $IM ){ 
  die('key is: '.$key);
}
?>

 来分析分析

1. preg_match (要搜索的模式,字符串,参数)   在字符串里搜索符合 要搜索的模式 的字符,并返回给参数。

举个栗子:

<?php
// 从URL中获取主机名称
preg_match('@^(?:http://)?([^/]+)@i',
    "http://www.runoob.com/index.html", $matches);
$host = $matches[1];       //www.runoob.com
 
// 获取主机名称的后面两部分
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "domain name is: {$matches[0]}\n";
?>

返回结果:

domain name is: runoob.com
2. trim(字符串,字符)   移除字符串两侧的空白字符或其他预定义字符。举个栗子:
<?php
$str = "Hello World!";
echo $str . "<br>";
echo trim($str,"Hed!");
?>

执行结果:

Hello World!
llo Worl

3. 接着来看正则表达式  (更多:https://blog.csdn.net/qq_26090065/article/details/81606045

 /key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i

.                                  匹配除 "\n" 之外的任何单个字符

*                                 匹配它前面的表达式0次或多次,等价于{0,}

{4,7}                           最少匹配 4 次且最多匹配 7 次,结合前面的 . 也就是匹配 4 到 7 个任意字符

\/                                匹配 / ,这里的 \ 是为了转义

[a-z]                           匹配所有小写字母

[:punct:]                     匹配任何标点符号

/i                                表示不分大小写

总体来说,就是通过 id 传参,并且要符合上面的正则表达式,key就会显示,构造payload如下:

http://120.24.86.145:8002/web10/?id=keykeyaaaakey:/a/keya:

key 粗来了

猜你喜欢

转载自blog.csdn.net/qq_26090065/article/details/81605837