SWPUCTF 2019總結以及部分WP


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

  簡單寫個WP吧。

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

一、MISC

神奇的二維碼

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

 

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

 

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

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{}提交就可以了。這道題就算是簽到題吧。

 

漂流的馬里奧

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

 

 還是繼續使用binwalk分離內部文件,其下面有個50000.rar,打開后發現也就是1.txt的壓縮包,我們使用010 editor查看一下16進制源碼

 

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

再繼續搜索相關NTFS流的資料后我找到了獲取這個數據流的方法。如下,更多關於NTFS流的信息可以自行再搜索相關資料。

 

 

偉大的偵探

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

 

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

 

 然后misc文件夾下的內容如下

 

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

swpuctf{iloveholmesandwllm}。

 

你有沒有好好看網課

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

 

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

 

 

 

 這兩幀的燈位置都有隱藏信息,提取出來如下

..... ../... ./... ./... ../
dXBfdXBfdXA=

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

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

 

 

Network

下載后發現里面只有一個txt文檔,而且里面只有四個數字

 

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

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()
View Code

 

打開后發現需要密碼,010查看發現全局加密和局部加密位不一,也就是偽加密了,改09 為 00后打開

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

flag{189ff9e5b743ae95f940a6ccc6dbd9ab}

 

easy_web

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

 

 可以發現可以申請廣告。

 

 然后發現其是可以實現XSS的,但是這題管理員並不上線,所以XSS沒有什么用

 

 后面經過了一些測試發現之后,廣告詳情的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,構造如下廣告

 

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

 

 這題的很多細節,比如查列數以及如何構造sql就不再說了,這里就只講一下最后的payload實現。

 

簡單的Python

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

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

然后就用了一波別人的session獲得了flag...

 

 

 

 

 

 


 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM