第十屆極客大賽WP-MISC、RE-2019.11.12

序言:最近看雪的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}

先寫到這裏吧!

在這裏插入圖片描述

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