代碼如下
<?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); } ?>
我初次構造的payload:
keykeykeykeykey:/ /keya@i
解析:
key . * key . {4,7} key:\/ \/ ( . * key) [a-z] [[:punct:]] ‘key’+任意單個字符+零個或多個+‘key’+任意單個字符+長度4-7+‘key:/’+任意單個字符+ / +(任意單個字符+零個或多個+‘key’)+英文小寫字母一個+匹配‘!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~.’中一個字符
payload最后面的 "i" 得益於 “preg_match函數的特性 ” ,這個 “i” 可有可無。
此外還有:
/i:表示匹配時不區分大小寫,如URL的匹配
/u :表示按照unicode,UTF-8的規則匹配,如漢字的匹配
/s: 表示把字符串視作單行
一個更加簡潔的payload:
keykey1234key:/1/keya@