bugku ctf 字元?正則?

2021-09-25 18:43:04 字數 1841 閱讀 7606

開啟** 

是一段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 

$str = " hello world! ";

echo "不使用 trim: " . $str;

echo "

";echo "使用 trim: " . trim($str);

?>

.                                  匹配除 "\n" 之外的任何單個字元*                                 匹配它前面的表示式0次或多次,等價於最少匹配 4 次且最多匹配 7 次,結合前面的 . 也就是匹配 4 到 7 個任意字元\/                                匹配 / ,這裡的 \ 是為了轉義[a-z]                           匹配所有小寫字母

[: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碼對照表 如下...