2020第四屆強網杯部分WP

題目序號 主動

操做內容:

進入網址,閱讀源碼,發現是個命令執行的題。
在這裏插入圖片描述
php

先嚐試ls命令列出全部文件,發現存在flag.php文件,猜想flag在該文件中。
在這裏插入圖片描述
java

而後嘗試讀取flag.php文件,可是正則匹配了flag關鍵詞,須要使用通配符繞過,如:fla?.php,可是嘗試cat、tail、head、more文件讀取命令均無效,最後使用tac命令拿到flag。
在這裏插入圖片描述
web

flag值:

flag{I_like_qwb_web}算法

題目序號 Funhash

操做內容:

進入網址,開始閱讀源碼,發現須要繞過三個不一樣的限制方可拿到flag。
在這裏插入圖片描述
sql

先看level1,分析可知須要明文和md4加密後的密文要匹配才行,好在他使用了非精確匹符號!=,由於能夠考慮」0e」,即明文爲0e開頭,密文也爲0e開頭,且0e後面全是數字,寫腳本跑出了一個符號條件的字符串0e251288019。代碼以下:數組

public static void main(String[] args) {
   for(int i = 0;;i++){
       String str = Md4.getMD4ofStr("0e"+i);
       if(str.startsWith("0e")){
           char chars[] = str.toCharArray();
           boolean isNumber = true;
           for(int j = 2;j < chars.length;j++){
               int s = (int)chars[j];
               if(s < 48 || s > 57){
                   isNumber = false;
                   break;
               }
           }
           if(isNumber){
               System.out.println(i+"\t"+str);
               break;
           }
       }
   }
}

在這裏插入圖片描述

因而構造payload以下:
在這裏插入圖片描述
網絡

繼續繞過level2,發現須要找到不一樣明文,可是md5值相同的,一開始想到了md5碰撞,後來一想,php參數名傳入數組的話,任意傳值,md5都會匹配,因而構造payload以下:
在這裏插入圖片描述
ide

來到level3,咋一看是個sql注入,可是hash4用md5加密成二進制了,這個比較巧妙,要注入他須要md5加密後帶有’or’ 的字符串,因而從網上找到符合條件的字符串ffifdyop,構造payload以下:
在這裏插入圖片描述
網站

flag值:

flag{y0u_w1ll_l1ke_h4sh}編碼

題目序號 IPFS

操做內容:

一、pic1是分6塊存儲,經過題目給出的6個hash值能夠直接在IPFS網絡中下載這6個分塊文件。我是在https://ipfs.io/ipfs/網站上下載的,如:
https://ipfs.io/ipfs/QmZkF524d8HWfF8k2yLrZwFz9PtaYgCwy3UqJP5Ahk5aXH
下載後獲得6個文件,其中1個文件帶有後綴【.jfif】,應該是第一個分塊。6個文件中有5個文件大小一致,爲26624byte,另外1個文件小一些,應該是最後一個分塊。肯定了頭尾,其他4個分塊爲中間分塊,只有24種組合,我直接用拼接的,拼錯了圖片會有明顯的不正常感受。最後獲得一個完整的pic1.jpg文件:
在這裏插入圖片描述


二、pic2分1個塊存儲,題目給了pic2文件的sha256sum,使用文件的hash值添加0x1220,而後使用base58進行編碼獲得IPFS-Multihash,這個值也是題目說的忘記了的那個hash2

s = ’1220659c2a2c3ed5e50f848135eea4d3ead3fa2607e2102ae73fafe8f82378ce1d1e'
hash2 = b58encode_int(int(s, 16))

可知:
hash2= 「QmVBHzwuchpfHLxEqNrBb3492E73DHE99yFCxx1UYcJ6R3」
根據hash2下載文件pic2.jpg:
在這裏插入圖片描述


multihash是一種自識別hash (Self identifying hashes)
multihash 多重哈希 遵循TLV 模式(type-length-value)。它其實就是一個字符串,由三部分組成:HASH算法編碼、HASH值的長度(字節數)、HASH 值。
SHA2-256的編碼爲0x12,其HASH摘要長度爲32字節(十六進制數爲0x20)。把1220加到前面所得HASH值的開頭。
三、根據圖片,flag=flag{md5(hash1+hash2)},還須要知道hash1。這裏遇到個坑,開始一直向把這個值經過pic1.jpg算出來,可是是分塊存儲,一直沒找到根節點的hash生成算法。最後換了個方法,把pic1.jpg這個文件按照26624的分塊再往網上上傳一次。命令以下:


ipfs add -s size-26624 pic1.jpg

命令返回了一個hash值:
QmYjQSMMux72UH4d6HX7tKVFaP27UzC65cRchbVAsh96Q7
查看一下這個節點下的文件:

ipfs ls -v QmYjQSMMux72UH4d6HX7tKVFaP27UzC65cRchbVAsh96Q7

返回了的6個節點跟題目給出的hash值一致:
在這裏插入圖片描述

hash1= 「QmYjQSMMux72UH4d6HX7tKVFaP27UzC65cRchbVAsh96Q7」
四、計算md5(hash1+hash2),隨便找了個網站計算md5,得flag{35fb9b3fe44919974a02c26f34369b8e}

flag值:

flag{35fb9b3fe44919974a02c26f34369b8e}

題目序號 bank

操做內容:

一、經過nc鏈接題目,是一個sha256的爆破,代碼以下:

dic="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
result='11341d04ffb54c67907472b094e4814bd955dd4f223a17939d6d61683e9c5ed3'
known="by1gCDw8wxb1gRoZV"
teamtoken="icq8e64a8ad90e4a5ae3ce7f7ce89fd4"
for i in dic:
    for j in dic:
        for k in dic:
            key=i+j+k
            s=key + known
            h=hashlib.sha256(s.encode('ascii')).hexdigest()
            if h==result:
                print(key)

二、進去之後觀察了一會,是一個交易系統,每次進去默認只有10塊錢,獲取flag要1000塊,開始覺得只須要爆破100次sha256就能夠了,可是事實是沒有這麼簡單。每次鏈接都是一個獨立的進程,交易信息和資金信息斷開後就重置了,沒法經過屢次爆破而後交易給一個用戶的方式來增長資金。繼續看到了一個提示,交易後會生成一個字符串,根據提示,這個字符串應該是根據交易的雙方和金額組成。由AES算法來生成3個字符串,每一個字符串32byte,而後作拼接生成一個相似交易單號的96byte字符串。系統中能夠查看一些別人的交易單號,本身交易以後也會生成交易單號,系統中還有一個是提交交易單號的功能,應該是提交了以後會根據提交的交易單號來更新金錢數據。根據這些,思路是經過已知交易單號和本身的交易單號,破解AES的key,而後使用key僞造交易單號,因而開始入坑……淚。開始着手研究AES的已知明文攻擊、選擇明文攻擊,搞半天無果,準備放棄。喝口水忽然靈光閃現,本身交易後會生成交易單號,其中的的recevier字符串原本就是經過key加密的,系統中能查到10筆交易單號,把中間的recevier字符串更換成本身的就好了。沒寫代碼,作了一個excel,快速生成10筆僞造交易單,而後提交給系統。
在這裏插入圖片描述

最後獲取到1000+的資金,使用get flag得到最終flag。
好煩,沒記flag,還要作一次……
在這裏插入圖片描述

如該題使用本身編寫的腳本代碼請詳細寫出,不容許截圖

flag值:

flag{3a9f633497c3cf3ac869c18ef416ad9c}

題目序號 upload

操做內容:

文件下載下來用wireshark分析,比較簡單,能夠看到以下信息:
在這裏插入圖片描述
提示很明顯,使用steghide加密,而且使用了密碼。在數據包裏面找到了一個jpg文件,很容易分離出圖片,繼續找密碼,沒找到,數據包比較簡單,應該不會漏。盯着代碼看了一會,總以爲這個a good password是在嘲諷我,因而使用密碼123456解密steghide.jpg,獲得flag.txt文件。
在這裏插入圖片描述


flag就在文件中。

flag值:

flag{te11_me_y0u_like_it}

相關文章
相關標籤/搜索