bugku數字驗證繞過正則

2022-05-04 04:39:08 字數 1284 閱讀 1134

題目:

第6行使用正則匹配如果匹配到$password開頭12個字元中有空格則輸出flag並執行exit;

12行是正則匹配$password裡的字元是否大於6,如果小於則echo hello world然後break所以一定要大於6才行。

19-28行是表示要將$password裡使用正則匹配,滿足達到3次或三次以上(也就是說$password裡要有滿足正則的三個要求)

最終的還要求$password等於42

1

<?php

2error_reporting(0);

3$flag = 'flag';

4if ("post" == $_server['request_method']) $/', $password)) //

preg_match — 執行乙個正規表示式匹配711

while (true

) 17

echo

preg_match_all($reg, $password, $arr

);18

$c = 0;

19$ps = array

(20 'punct',

21 'digit',

22 'upper',

23 'lower'

24 ); //

[[:punct:]] 任何標點符號 [[:digit:]] 任何數字 [[:upper:]] 任何大寫字母 [[:lower:]] 任何小寫字母

25foreach ($ps

as$pt

) 28

if ($c

< 3) break;29

//>=3,必須包含四種型別三種與三種以上

30if ("42" == $password) echo

$flag;31

else

echo 'wrong password';

32exit;33

}34}35 ?>

第乙個問題倒是很簡單,只需要長度不小於12位即可。

第二個/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/這個正則滿足6次或以上。 

滿足其中1個+1,如果單純的1個是不會+1的,比如1111111這樣不會加1

但是1,1,1這樣就會加了。

最終的payload:

post:

password=42.000000000000e-0

Bugku 數字驗證正則繞過

語法 int preg match all 字串 pattern 字串 subject 陣列和 matches 整數 flags preg pattern order 整數 offset 0 搜尋主題中所有匹配模式給定正規表示式的匹配結果並將它們以標誌指定順序輸出到匹配中。在第乙個匹配找到後,子串行...

數字驗證正則繞過

error reporting 0 flag flag if post server request method password while true if c 3 break 3,必須包含四種型別三種與三種以上 4 弱型別比較,42abc,強制轉換為數字 if 42 password echo...

Bugku 各種繞過

id uname通過get方法傳值,passwd通過post方法傳值且如果想要進入內層迴圈必須傳入uname和passwd uname和passwd弱型別不相等 uname和passwd加密後的值強相等 id欄位url解碼後 margin 通過簡單的梳理本題的思路已然明了,id欄位只是迷惑,marg...