開啟**
是一段php**
<?php
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() 和 trim() 這兩個函式的應用
移除字串兩側的空格:
<?php. 匹配除 "\n" 之外的任何單個字元* 匹配它前面的表示式0次或多次,等價於最少匹配 4 次且最多匹配 7 次,結合前面的 . 也就是匹配 4 到 7 個任意字元\/ 匹配 / ,這裡的 \ 是為了轉義[a-z] 匹配所有小寫字母$str = " hello world! ";
echo "不使用 trim: " . $str;
echo "
";echo "使用 trim: " . trim($str);
?>
[:punct:] 匹配任何標點符號
/i 表示不分大小寫
(這裡我只新增了 這道題所需的正規表示式)
接著開始分析
"/key.*key.key:\/.\/(.*key)[a-z][[:punct:]]/i"
一。先看最外邊的//i,//代表定界符,你限定的條件都在這個定界符裡面,i是不區分大小寫
二。來看 /key 首先就是得有key這三個字母,不一定是一開始就是key ?id=key
三。 /key.* 這裡的.是可以匹配任何字元,所以你隨便打個就行,我這裡打的a,又因為後邊有個 *(匹配前邊的字母0次或者多次),所以你可以繼續多打幾個啊或者不打 ?id=keyltz
四。/key.*key, 繼續分析,多加了個key, ?id=keyltzkey,繼續往後 /key.*key. 代表任意匹配乙個字元並且出現4-7次,那就打四個a好了 (這個只要是有4個到7個重複字母就行) ?id=keyltzkeyllll
五。/key.*key.key: 加上 key: ?id=keyltzkeyllllkey:
六:/key.*key.key:\/.\/ \代表了轉義,所以/不在代表了界定符,直接看成/./ 所以/l/即可, ?id=keyltzkeyllllkey:/l/
七:/key.*key.key:\/.\/(.*key)[a-z][[:punct:]] (.*key) => akey [a-z]代表隨便乙個小寫字母,a就可以,後邊那個是標點符號,比如, ?id=keyltzkeyllllkey:/l/lkeyl,
得到flag
BugKuCTF 雜項 論劍
首先一套常規操作,右鍵檢視常規資訊,binwalk分析一下,stegsolve再搞一搞,沒發現什麼有價值的東西。然後winhex檢視二進位制檔案,發現一段連續的01串。嗯?有蹊蹺。8個一組轉成ascii碼值,得到mynameiskey hhh。有用的資訊,我們先儲存下來。嘗試修改一下的size,看看...
BugkuCTF 網域名稱解析
前言 寫了這麼久的web題,算是把它基礎部分都刷完了一遍,以下的幾天將持續更新bugkuctf web部分的題解,為了不影響閱讀,所以每道題的題解都以單獨一篇文章的形式發表,感謝大家一直以來的支援和理解,共勉 題目意思是把flag.bugku.com 解析到120.24.86.145,這個windo...
BUGKU CTF 奇怪的密碼
bugku 奇怪的密碼 給的密文,同時題目作用不大 gndk rlqhmtkwwp z 看到密文想到ascii解密,但flag 提交少不了雙括號,那麼如果是ascii是按常規都增加或減少某個數必然最後乙個字母和第5個相同,顯然不是,所以有點像當作是公差變化數列。這是第乙個坑 ascii碼對照表 如下...