web1:打開題目如下顯示
打開鏈接網頁顯示如下,並且發現不能查看源代碼,所以按Ctrl+Shift+i檢查
在源代碼中找到了flag
web2:打開題目如下顯示
打開鏈接發現是一個網頁計算器,不過限制了輸入長度,所以打開開發者工具,修改限制。輸入正確結果就得到flag了
web3:打開題目顯示如下
通過標題猜測應該跟get方式有關,打開鏈接網頁如下
這段php代碼的意思是:構造what參數,並輸出what參數的值,如果what參數的值是flag就輸出flag的內容
web4:打開題目顯示如下
通過標題猜測應該跟post方式有關。打開鏈接如下
這段PHP代碼的意思是:構造what參數並通過post方法傳到服務器,如果what參數的值是flag就打印出flag的內容
這裏用了火狐瀏覽器的hackbar插件
web5:打開題目如下
打開鏈接,網頁有如下PHP代碼
代碼意思是:通過get方式得到num參數的值,如果num不是數字或數字字符串,且num的值等於1,則輸出flag。這裏就是矛盾的地方。這裏涉及了PHP的一個小漏洞。那就是==運算符只是檢測左右兩邊的值是否相等。例如1w121 == 1中,1w121會被強制轉換成整型1,則兩者相等。
web6:打開題目顯示如下
打開鏈接彈出兩個對話框
檢查源碼發現最後面有一串奇怪的字符串
以&#形式編碼的是Unicode編碼,&#後面的是ascll碼,所以解碼可以得到flag
web7:打開題目顯示如下
按照題目意思,需要將flag.bugku.com解析到120.24.86.145。在windows下,修改host文件,在host文件中加入此句 :
120.24.86.145 flag.bugku.com
訪問http://flag.bugku.com/即可得到flag。
一般情況下host文件地址爲:C:\Windows\System32\drivers\etc\hosts
訪問flag.bugku.com得到flag
web8:打開題目顯示如下
打開鏈接發現網頁一直在閃爍,檢查代碼也一直不同。猜想是否尋找的flag就存在於某一頁面之中,於是採用burp suite 中的repeater功能逐步查看,得到flag
web9:打開題目顯示如下
打開鏈接有PHP代碼如下
代碼解析:
flag在變量中,我們看到$$ $$ 我們知道容易引發變量覆蓋
還有一段正則表達式 /^\w+$/
正則表達式:
^:匹配輸入字符串的開始位置
\w:匹配字母、數字、下劃線,等價於 '[A-Za-z0-9_]
+:代表至少一個
$:匹配輸入字符串的結束位置
[a-z0-9A-Z] 以外的都不行
我們 get傳入args
我們讓args=GLOBALS 全局數組變量 關於這個變量可以百度
$args=GLOBALS 又和var_dump($$args) 前面那個$ 組成$GLOBALS
flag變量又在$GLOBALS中,var_dump eval 成功得到flag
var_dump()函數 顯示關於一個或多個表達式的結構信息,包括表達式的類型與值。數組將遞歸展開值,通過縮進顯示其結構。
PHP 在名爲 $GLOBALS[index] 的數組中存儲了所有全局變量。變量的名字就是數組的鍵。
web10:打開題目顯示如下
打開網頁顯示如下
檢查源代碼發現一大堆奇怪的字符串
結合題目標題搜索得知了JSFuck 可以讓你只用 6 個字符[ ]( ) ! +
來編寫 JavaScript 程序。而jother是一種運用於javascript語言中利用少量字符構造精簡的匿名函數方法對於字符串進行的編碼方式。其中8個少量字符包括:! + ( ) [ ] { }
。只用這些字符就能完成對任意字符串的編碼。jother直接在瀏覽器(IE可以)的控制檯裏輸入密文即可執行解密。
所以得知這裏是JSFUCK加密。直接複製到console裏面執行得到內容
在表單裏提交該內容發現錯誤
再結合題目說的字母大寫,嘗試再次提交,結果正確