欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Bugku_字符?正则?

程序员文章站 2022-03-25 08:12:07
...

Bugku_字符?正则?

 <?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);
}
?> 

通过分析代码可知,只要输入的id符合正则匹配,就可以得到flag。

正则匹配规则

  • 定界符 / / 表示正则匹配的开始和结束
  • 点(.) 任意单个字符
  • 星号(*) 前边的字符出现零次、一次或多次
  • 加号(+) 前面的字符至少出现1次
  • 问号(?) 前面的字符最多只可以出现一次
  • {n,m} 前边的字符出现n~m次
  • 反斜杠(\) 转义字符
  • [a-z] 从a-z匹配单个字符
  • [[:punct:]] 任何标点符号
  • /i 正则表达式大小写不敏感
  • \d 匹配数字
  • \b 匹配单词的开始或结束
   /key     .                 *        key   .        {4,7}     key:\/   .\/            (.*key)                            [a-z]                   [[:punct:]]/i
   key+任意单个字符+前面的字符出现零次或多次+key+任意单个字符(出现4~7)+key:/+任意单个字符+/+(任意单个字符+前面的字符出现零次或多次+key)+a~z中任意一个+!"#$%&'()*+,-./:;<=>aaa@qq.com[\]^_`{|}~.中任意一个符号

知道以上的匹配规则后就可以进行编写payload了。

http://target/web10/?id=keykeyaaaaakey:/a/keya!

Bugku_字符?正则?

相关标签: CTF刷题