序言:最近看雪的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}
先写到这里吧!