首页
社区
课程
招聘
[原创]第十届极客大赛WP-MISC、RE-2019.11.12
发表于: 2019-11-12 21:57 12129

[原创]第十届极客大赛WP-MISC、RE-2019.11.12

2019-11-12 21:57
12129
序言:最近看雪的CTF题库也开启了,本来想去划水呢,结果第一道题就直接卡住了好长的时间。(真的是“电子竞技”,菜是原罪),唉,算了后续还会分析一下那个的第一道题。另外就是刚结束没多久的极客。后续还是会再写一篇记录那一个“罪恶”的第一题。

RE
python2:会Z3吗? 
[链接](https://pan.baidu.com/s/1yFnSNlEit8aePl_IRDY80w)  提取码: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:(整整40个字符啊!)
Syc{Y0u_S3e_Z3_1s_soooo00000_Interest1ng}
先写到这里吧!



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 180
活跃值: (1328)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
点赞
2019-11-13 09:05
0
游客
登录 | 注册 方可回帖
返回
//