Bugku 數字驗證正則繞過

2022-05-08 12:06:12 字數 1922 閱讀 4604

語法:int preg_match_all (字串$ pattern ,字串$ subject [,陣列和$ matches [,整數$ flags = preg_pattern_order [,整數$ offset = 0 ]]] )

搜尋主題中所有匹配模式給定正規表示式的匹配結果並將它們以標誌指定順序輸出到匹配中。

在第乙個匹配找到後,子串行繼續從最後一次匹配位置搜尋。

引數說明:

返回值:返回完整的匹配次數(可能是0),或者如果發生錯誤返回false。

<?php 

error_reporting(0);

$flag = 'flag';

$password= "4200000000.000000000000e-8";

/*[:graph:]:是除空格符(空格鍵與[tab]鍵)之外的所有按鍵

^ :匹配你要用來查詢的字串的開頭

$:匹配結尾

:匹配重複12次或多次-->長度大於12

*/ var_dump(preg_match('/^[[:graph:]]$/', $password));

if (0 >= preg_match('/^[[:graph:]]$/', $password)) //preg_match — 執行乙個正規表示式匹配

/*[[:punct:]] 任何標點符號

[[:digit:]] 任何數字

[[:upper:]] 任何大寫字母

[[:lower:]] 任何小寫字母

$reg --> 可列印字元

*/ while(1)

else

$c = 0;

$ps = array('punct', 'digit', 'upper', 'lower'); //[[:punct:]] 任何標點符號 [[:digit:]] 任何數字 [[:upper:]] 任何大寫字母 [[:lower:]] 任何小寫字母

foreach ($ps as $pt)

echo "\$c :";

var_dump($c);

if ($c < 3)

else

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

echo "last one :";

var_dump( "42" == $password);

if ("42" == $password)

else

exit;

}

這題唯一的坑點就是post的時候不要用password!!!!!

經過一堆測試,發現post的只要不是「password"的就行,讓後台得到的是乙個空,就可以出flag,所以說這是乙個黑盒測試嗎?!一開始給的**其實是乙個幌子???!!!

bugku數字驗證繞過正則

題目 第6行使用正則匹配如果匹配到 password開頭12個字元中有空格則輸出flag並執行exit 12行是正則匹配 password裡的字元是否大於6,如果小於則echo hello world然後break所以一定要大於6才行。19 28行是表示要將 password裡使用正則匹配,滿足達到...

數字驗證正則繞過

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...