bugku web 字符?正则?

打开靶场,发现php代码

 

很明显,这是一道关于php正则表达式的题,代码也很简单,这里需要注意几个函数的用法

①preg_match(pattern,str,match):

pattern:匹配模式

str:参与匹配的字符串

match:如果提供了参数matches,它将被填充为搜索结果。 $matches[0]将包含完整模式匹配到的文本, $matches[1] 将包含第一个捕获子组匹配到的文本,以此类推

②trim():去除字符串首尾处的空白字符(或者其他字符)

tips:

如果不指定第二个参数,trim() 将去除这些字符:

  • " " (ASCII 32 (0x20)),普通空格符。
  • "\t" (ASCII 9 (0x09)),制表符。
  • "\n" (ASCII 10 (0x0A)),换行符。
  • "\r" (ASCII 13 (0x0D)),回车符。
  • "\0" (ASCII 0 (0x00)),空字节符。
  • "\x0B" (ASCII 11 (0x0B)),垂直制表符。

本题的重点在于对匹配模式的分析

 

 

因为正则表达式大家接触的也比较多,这里只提一下几个不那么参加的点

1.模式修饰符:可以看出,本题的模式修饰符为/i,也就是忽略大小写

 

2.子表达式:形如 (very)*large ,可以匹配到“large”,‘“very large”,“very very large”等等

3.[[:punct:]]:匹配标点符号,这是一种用于POSIX风格的正则表达式的字符类

知道这些之后,就可以着手构建payload了,我选择的payload是:id?=keykey1111key:/1/keya@

 

 

 

 

附加知识:

其他用于POSIX风格正则表达式的字符类:

[[:alnum:]]:匹配文字数字字符

[[:alpha:]]:匹配字母字符

[[:lower:]]:匹配小写字母

[[:upper:]]:匹配大写字母

[[:digit:]]:匹配小数

[[:xdigit:]]:匹配十六进制数字

[[:blank:]]:匹配制表符和空格

[[:space:]]:匹配空白字符

[[:cntrl:]]:匹配控制符

[[:print:]]:匹配所有可打印字符

[[:graph:]]:匹配除空格外的所有可打印字符

 

posted @ 2021-10-11 21:59  r1kka  阅读(49)  评论(0)    收藏  举报