BugKu 字元?正則?小記

2021-09-25 16:23:58 字數 1622 閱讀 9283

這是乙個簡單題,不過可以用來練練正項表達,小白所寫,大佬見諒

進入鏈結

由**知這是可以通過get傳參得到flag(就是在位址列操作),我們來看看題目的問題

/key.*key.key:/./(.*key)[a-z][[:punct:]]/i

^:匹配一行字串的開頭

. : 匹配任意字元,除了換行符

[…]:匹配括號中的任乙個,[amk] 匹配 『a』,『m』或』k』

[^…]: 不在中的字元:[^abc] 匹配除了a,b,c之外的字元

*:匹配0個或多個的表示式

+:匹配1個或多個的表示式

?:匹配0個或1個由前面的正規表示式定義的片段,非貪婪方式

開始看題

/key.*key.key:/./(.key)[a-z][[:punct:]]/i

我們將正規表示式拆開

/key

.key

.key:/.

/(.*key)

[a-z]

[[:punct:]]

/i這樣看的話是不是就清晰多了,開始匹配吧,/key,『/』代表所有正項匹配的開始,key為固定不變的字串

第一段匹配為 key

.是可以任意匹配乙個字元,*是匹配前邊的字母0次或者多次,所有.*就是可以輸入任意個字元,這裡我輸入aaaa,接上面的匹配的字串為 keyaaaa

key為字串,匹配的就是key,接上面就是 keyaaakey

.是匹配任意4—7個字元,我這裡就就寫為aaaaa,接上面就是 keyaaakeyaaaaa

「key:」也和key一樣,就是多了:,接上面 keyaaakeyaaaaakey:

/中的「\」,是轉義字元,因為「/」是代表所有正項匹配的開始,我們需要將它變成普通的「/」,所以就用「\」,接上面就是 keyaaakeyaaaaakey:/

.是代表任意乙個字元,我這就用a,接上面keyaaakeyaaaaakey:/a

又有乙個「/",接上面 keyaaakeyaaaaakey:/a/

(.*key)是代表任意個字元後加key,括號的的意義就是這個.*key優先組合,接上面 keyaaakeyaaaaakey:/a/aaakey

[a-z]代表任意在a到z乙個小寫字母,這裡我就用a,接上面 keyaaakeyaaaaakey:/a/aaakeya

[[:punct:]]表達任意乙個ascll標點字元,這裡我用逗號「,」,接上面 keyaaakeyaaaaakey:/a/aaakeya,(,為英文狀態下的逗號)

/i表示不分大小寫

這裡我匹配對應的正項式為 keyaaakeyaaaaakey:/a/aaakeya,

接下來我們就把我們匹配的式子傳進id

bugku 字元正則

最重要的就是這個正規表示式,key.key.key key a z punct i trim函式是去掉引數裡面的空格或者指定變數 第乙個 是開始定界符,匹配乙個key 表示匹配除了 n外的所有字元,然後再匹配乙個key,表示匹配除 n外的所有字元4到7個,再匹配key 任意字元 任意字元和key 任...

Bugku 字元?正則?

開啟是一段中規中矩的php 先讀一下 高亮檔案2.php 定義變數key 定義變數im其值是乙個正規表示式匹配的結果 如果im是真就輸出 key所以這道題的關鍵也就是im正則匹配的結果了,我們只需要讓其為 1即可。先分析下他在如何匹配 匹配函式裡共有三段,第一段是匹配方式,第二段是字串,第三段是引數...

bugku之字元?正則?

題目鏈結 highlight file 2.php key key im preg match key.key.key key a z punct i trim get id match if im preg match 執行匹配正規表示式 preg match pattern,subject,ma...