序言:最近看雪的CTF題庫也開啓了,本來想去划水呢,結果第一道題就直接卡住了好長的時間。(真的是“電子競技”,菜是原罪),唉,算了後續還會分析一下那個的第一道題。另外就是剛結束沒多久的極客。這邊是寫了一些WP,有位老哥的WP也挺好的。文末給出那個老哥博客的鏈接。他的博客記錄的WP是一些有關WEB的和RE的,重複的RE下面我就不在寫了。
MISC
RPG真是太有趣了吧:做題也太累了,不如來打會遊戲吧.
鏈接:
RPG
提取碼:llx0(可能後面會失效我也不確定,要是失效了,可以給我私信。)
上面是下載後的文件,打開的時候應該大部分都會報錯,顯示缺少一個DLL的文件。去網上下載下來,按照步驟導入進行了。接着就到了遊戲的歡樂時刻。
上面應該是一個正常存檔應該有的,然後就是按照流程刷怪,最後打敗BOSS拿到flag但是這個遊戲被改過了,你是沒有辦法這樣通關的。因此面對這種直接外掛走起。
這裏呢,我忘了我那次寫的那個記事本放那裏了,裏面記錄了人物技能和裝備之類的代碼,修改的時候需要的,不過你們可以試試,正好也體驗一下游戲。
下面是我的存檔:
最後就是打BOSS,最後就很好過了
最後一張最重要的圖片:
是誰殺了誰:注意自己的HP,別被氣死了。
鏈接:誰叫我 密碼:c2za3j
備用: 誰叫我1
(可能後面會失效我也不確定,要是失效了,可以給我私信。)
接着打開
接着在你點擊的時候此文件夾的目錄中會出現一個文件
用hex打開
另外的題回頭等有時間再放吧!而且那道ZIP加密的題直接爆破就行了。
RE
(PS:由於那個師傅的WP寫的也挺好的我就只寫其它的吧。)
python2:會Z3嗎?
鏈接 提取碼:emfo
這道題還是讓我學到了許多的東西的,首先感謝出題人。什麼感情自己體會啦!但是完整的腳本沒寫出來,我寫出來的是部分,各位先勉強看着吧…
我也是一把辛酸淚不說了!放圖:
最開始是像這樣直接腳本一跑完事,後來一想36要爆破到什麼時候後來變成一個一個手動爆了!心疼自己一分鐘。
最開始其實是可以搞出來倒數第四個字符的並且那個flag的形式是確定的Syc{…}因此就一個接一個字符的爆就可以了。放一下我最後一個字符的腳本。
不知道爲什麼可能是代碼太長了!
import struct
import time
import random
import string
arr = [77,263,394,442,463,512,667,641,804,752,885,815,1075,1059,1166,1082,1429,1583,1696,1380,
1987,2263,2128,2277,2387,2670,2692,3255,3116,3306,3132,3659,3139,3422,3600,3584,3343,3546,
3299,3633,3281,3146,2990,2617,2780,2893,2573,2584,2424,2715,2513,2324,2080,2293,2245,2309,
2036,19441931,1817,1483,1372,1087,1221,893,785,697,586,547,324,177,184]
def fun(start, end, s):
a = 32310901
b = 1729
c = s
m = end - start
while True:
d = int((a * c + b) % m)
yield d
None
c = d
def generate_random_str(randomlength=16):
#生成一個指定長度的隨機字符串
random_str = ''
base_str = 'ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789_'
length = len(base_str) - 1
for i in range(randomlength):
random_str += base_str[random.randint(0, length)]
return random_str
def fun(start, end, s):
a = 32310901
b = 1729
c = s
m = end - start
while True:
d = int((a * c + b) % m)
yield d
None
c = d
d=[1,2,3,4,5,6,7,8,9,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
while(d[39]!=arr[39]):
f = generate_random_str(1)
flag='Syc{Y0u_S3e_Z3_1s_soooo00000_Interest1n'+f+'}'
length=len(flag)
a = struct.unpack('<I', flag[length - 4:].encode())[0] & 255
b=[]
c = fun(1, 255, a)
for i in range(32):
b.append(next(c))
continue
d = [ 0 for i in range(72) ]
for i in range(41):
for j in range(32):
a = ord(flag[i]) ^ b[j]
d[i + j] += a
print (f)
print(b)
print(d)
最後的flag:
Syc{Y0u_S3e_Z3_1s_soooo00000_Interest1ng}
先寫到這裏吧!