面向新生的一个比赛,但是还是没法都做出来,没有以前笨笨的那股冲劲了,其实还是遇到了瓶颈。

Real_way

思路应该是找到和路径文件夹名顺序相同的flag。懒得做了,直接看wp:
五层目录,每层目录中有7个文件夹,且每个叶子节点上都有一个 flag.txt 文件,所以总共是16,807 个flag.txt文件夹

仔细一看就能看出来文件夹的命名都很简单,flag中的密文也很简单,也很有对应关系

这些个flag文件中只有一个是正确的,何谓正确的呢,就是它密文和它文件所在的路径相同
编写脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import os
import random

m=[]
for i in range(7):
m.append(chr(ord('a')+i))

print("Êý¾ÝÁ¿£º"+str(m))
strmap=[]
flag_map=[]
for i1 in m:
for i2 in m:
for i3 in m:
for i4 in m:
for i5 in m:
temp=i1+'\\'+i2+'\\'+i3+'\\'+i4+'\\'+i5
strmap.append(temp)
temp=i1+i2+i3+i4+i5
flag_map.append(temp)
#print(strmap)

def makemap(level,list_map):
if level>0:
level-=1
makemap


def makedir():
for p in strmap:
this='D:\\CTF\\QuestsAndWriteUps\\ACTF\\Real_way'
#path=os.path.abspath('.')+'\\misc_test\\'+p
path=this+'\\ACTF\\'+p
os.makedirs(path)
temp=open(path+'\\flag.txt','w')
temp.write('actf{'+flag_map[random.randint(0, len(strmap)-1)]+'}')

def checkflag():
basepath='D:\\CTF\\QuestsAndWriteUps\\ACTF\\Real_way'
#basepath=os.path.abspath('.')
ans=[]
for i in range(len(strmap)):
path=basepath+'\\ACTF\\'+strmap[i]+'\\flag.txt'
file=open(path,'r')
flag=file.readline()
if flag_map[i]==flag[5:flag.find('}')]:
#print(flag)
ans.append(flag)
#else:

#print('error ' +flag_map[i]+' : '+flag[5:flag.find('}')])
#print(flag[5:flag.find('}')])
file.close()
return ans




if __name__=='__main__':
#makedir()
print('Ŀ¼ɨÃèing')
ans=checkflag()
print(ans)

与熊论道

解与熊论道,解社会主义核心价值观,得pwd:123456,附件里有bmp,wbs43open解,一分钟就出来的题。ps:和上一题难度差距居然如此之大。
ACTF{PXY_wants_@_bOyfri3nd}

禁止摸鱼

扔winhex,尾巴zip,暴力得flag.txt,密码是3位的,而且还是弱口令:123,我从第1位开始爆破的,一瞬间就出了,有师傅从4位密码开始爆,爆了很久都没出。ps:和第一题难度差距竟如此之大。

纳什均衡

nc上去玩了一下,意思就是给若干个石头,你每次可以去除一些,对方也可以去除一些,双方去除的最大数量相同。你先行动,谁先去除到最后一个石头谁就赢了。要连胜5局才能得到flag。蕴含高深知识的看起来简单但是其实很难的游戏。思路挺有趣的,也有深度,奈何自己脑子笨,且不会写代码,最多玩到过第三局就没了,搜了下题目,博弈论。各种文章写得天花乱坠的,看不懂,也浮躁不想钻研。
看wp,写的居然是巴什博奕,巴什就巴什为啥题目要叫纳什(强大的ACTF主办方应该不会犯这种错误吧,肯定是我水平太低无法理解此中深意),而且如果我要是搜的是巴什就直接做出来了()
以下是百度百科的规范描述思路,只要知道是这么一回事很快就能做出来。也算一些课外知识吧。

巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。
显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取者再拿走m+1-k个,结果剩下(m+1)(r-1)个,以后保持这样的取法,那么先取者肯定获胜。总之,要保持给对手留下(m+1)的倍数,就能最后获胜。