bugku 正則匹配

2021-09-25 16:38:24 字數 1789 閱讀 4322

常見的正則匹配字元:

^:匹配一行字串的開頭

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

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

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

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

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

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

我們可以看bugku上的一道例題

點開鏈結得到

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

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

典型的正規表示式,顯然問題的解決方案就是在位址列傳參,使得id符合正規表示式,即可得到flag

首先我們將正規表示式拆開

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

/key 『/』代表所有正項匹配的開始,key為固定不變的字串所以第一段匹配為 key

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

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

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

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

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

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

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

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

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

[[:punct:]]表達任意乙個ascll標點字元,這裡我用逗號「,」,接上面

keyaaakeyaaaaakey:/a/aaakeya,(,為英文狀態下的逗號)

/i表示不分大小寫

這裡我匹配對應的正項式為 keyaaakeyaaaakey:/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 字元?正則?小記

這是乙個簡單題,不過可以用來練練正項表達,小白所寫,大佬見諒 進入鏈結 由 知這是可以通過get傳參得到flag 就是在位址列操作 我們來看看題目的問題 key.key.key key a z punct i 匹配一行字串的開頭 匹配任意字元,除了換行符 匹配括號中的任乙個,amk 匹配 a m 或...