天天看點

SWPUCTF 2019總結以及部分WP

  本次SWPUCTF開賽了,一共做了5個misc+2個web,RE和Android沒時間看= =,pwn完全不會,果然又是和去年一樣劃水。題目都出的很不錯,做題的時候思路其實也容易想到,剩下幾個web有思路但是最後還是沒有做出來。

  簡單寫個WP吧。

  本次比賽的部分檔案我已儲存上傳至xxx。懶得上傳,需要的話找我拿吧。

一、MISC

神奇的二維碼

  下載下傳之後是一個二維碼,直接掃描後是一個fakeflag,直接binwalk先掃描一波

SWPUCTF 2019總結以及部分WP

可以發現裡面有幾個rar,将其分離出來,其中兩個rar解出來都是沒有東西的,隻有最後那個flag.doc下面的一大串字元,用base64解密發現可以轉換。

SWPUCTF 2019總結以及部分WP

 那麼就寫一個簡單的Py腳本吧= =,當然也可以手動一直轉換。

SWPUCTF 2019總結以及部分WP
SWPUCTF 2019總結以及部分WP
import base64

with open('./1.txt') as f:
    s = f.readlines()[0].strip()
    try:
        while True:
            s = base64.b64decode(s)
    except:
        print(s)      

View Code

SWPUCTF 2019總結以及部分WP

 然後加上swpuctf{}送出就可以了。這道題就算是簽到題吧。

漂流的馬裡奧

  打開直接運作會在所在目錄生成一個1.txt,内容如下

SWPUCTF 2019總結以及部分WP

 還是繼續使用binwalk分離内部檔案,其下面有個50000.rar,打開後發現也就是1.txt的壓縮包,我們使用010 editor檢視一下16進制源碼

SWPUCTF 2019總結以及部分WP

 發現其比普通的rar檔案多了CTM部分和STM部分,搜尋一下發現CMT就是壓縮包的注釋部分,那麼STM是什麼呢,同樣我還發現STM部分包含flag.txt這肯定就是隐藏的flagle,在google上搜尋RAR STM相關關鍵字後我找到了這樣一篇博文,大概就滿足我們所說的隐藏資訊。

SWPUCTF 2019總結以及部分WP

再繼續搜尋相關NTFS流的資料後我找到了擷取這個資料流的方法。如下,更多關于NTFS流的資訊可以自行再搜尋相關資料。

SWPUCTF 2019總結以及部分WP

偉大的偵探

  從這個标題就知道和福爾摩斯相關,打開密碼.txt後如下

SWPUCTF 2019總結以及部分WP

 根據提示編碼錯誤,我們使用010 editor轉換編碼,最後發現密碼如下

SWPUCTF 2019總結以及部分WP

 然後misc檔案夾下的内容如下

SWPUCTF 2019總結以及部分WP

 果然還是和福爾摩斯有關的,這也就是歸來記中的跳舞的小人,但是這隻是簡單的按照書中的碼表進行轉換,和其真正的解密方法(根據出現頻率解密)不相同,最後對照網上的碼表得到flag

swpuctf{iloveholmesandwllm}。

你有沒有好好看網課

打開有flag2.rar,和flag3.rar,都有加密,經檢測不是僞加密,那就爆破吧,flag3是可以被爆破的,然後裡面就是我們人見人愛的影流之主了,flag.doc内容如下,

SWPUCTF 2019總結以及部分WP

 根據題目的提示,我們去看一下這些數字的幀數。

SWPUCTF 2019總結以及部分WP
SWPUCTF 2019總結以及部分WP

 這兩幀的燈位置都有隐藏資訊,提取出來如下

..... ../... ./... ./... ../

dXBfdXBfdXA=

第二行直接可以base64解密,第一行最開始猜測是莫斯加密,可是對不上莫斯的碼表,最後一個個嘗試之後發現其是敲擊碼,得到密碼

wllmup_up_up,用這個密碼可以打開flag2.rar。然後010 editor打開就可以發現在末尾的flag了。

SWPUCTF 2019總結以及部分WP

Network

下載下傳後發現裡面隻有一個txt文檔,而且裡面隻有四個數字

SWPUCTF 2019總結以及部分WP

 這道題比較誤導人的地方就是,它的标題叫做Network,剛好這四個數字又對應了四個網關位址,于是方向錯誤,最後對比其二進制才發現端倪,這四個數字轉成8位二進制後,隻有最高兩位二進制不同,我們嘗試寫一個腳本将其最高兩位提取出來,并且4個一組轉換位ASCII。發現寫出來的16進制數開頭是50 4B,應該也就是zip了,腳本如下

SWPUCTF 2019總結以及部分WP
SWPUCTF 2019總結以及部分WP
fp = open('t.txt','r')
a = fp.readlines()
p = []
for i in a:
    p.append(int(i))
s = ''
for i in p:
    if i == 63:
        a = '00'
    elif i == 127:
        a = '01'
    elif i == 191:
        a = '10'
    elif i == 255:
        a = '11'
    s += a

import binascii
flag = ''
for i in range(0,len(s),8):
    flag += chr(int(s[i:i+8],2))
flag = binascii.unhexlify(flag)
wp = open('ans.zip','wb')
wp.write(flag)
wp.close()      

打開後發現需要密碼,010檢視發現全局加密和局部加密位不一,也就是僞加密了,改09 為 00後打開

SWPUCTF 2019總結以及部分WP

然後又是一大串的字元,不說了上base64,解密得到flag

flag{189ff9e5b743ae95f940a6ccc6dbd9ab}

easy_web

打開如下,一個登陸注冊界面,随意注冊個賬号。

SWPUCTF 2019總結以及部分WP

 可以發現可以申請廣告。

SWPUCTF 2019總結以及部分WP

 然後發現其是可以實作XSS的,但是這題管理者并不上線,是以XSS沒有什麼用

SWPUCTF 2019總結以及部分WP

 後面經過了一些測試發現之後,廣告詳情的SQL是通過廣告名進行搜尋的,是以這裡可能實作二次注入,猜測SQL為(做完題後再猜測的)

  

select xx from xxx where title='xxx' limit 0,1      

然後嘗試之後發現過濾了or,sql,join,空格,#,-等一些字元,期間最頭疼的就是過濾了or,那麼order和information_schema都不能使用了,查詢字段我們還可以用union select,但是咋查表呢,最後我是自己手動猜出來的,資料庫為web1,下面有users表,裡面有name和pass字段,admin的pass就是最後的flag,構造如下廣告

SWPUCTF 2019總結以及部分WP

 沒錯,有22列,然後點選廣告詳情就可以得到flag的md5了,根據題目說明使用somd5解密即可得到flag

SWPUCTF 2019總結以及部分WP

 這題的很多細節,比如查列數以及如何構造sql就不再說了,這裡就隻講一下最後的payload實作。

簡單的Python

比賽結束了 = =題目下線了,沒法複現了。

emmm這題不知道是不是出題人失誤啊,猜了個redis密碼為password竟然直接連接配接上了。

然後就用了一波别人的session獲得了flag...

SWPUCTF 2019總結以及部分WP
SWPUCTF 2019總結以及部分WP
SWPUCTF 2019總結以及部分WP

WEB3弄出了secretkey了,下一步應該是個ssti了,但是周六周天都有事= =沒有做了。