Week5

终于又有题做了,,不过这次只出了一题

0x0D EasyUser(Rank:200)

这题,打开一看,猜测是利用密码找回的漏洞,以前遇到过类似的题目,验证码是4位纯数字,使用爆破,不过这题是6位纯数字,爆破需要的时间会很久,所以没在第一时间去爆。。后面提示从500000开始爆,,,

因为输入错误的验证码后会出现 验证码错误!请10分钟后再次尝试!

所以走入了误区,,,,以为需要加上邮箱,,,,,可是没爆出来,,,最后发现,,只要爆 number 参数就OK,,(神马10分钟后重试都是骗人的。。。)

爆出密码之后,发现用户名不是admin,,,后面就是脑洞的问题了,,随便猜些用户名尝试,后面根据 [email protected] 猜出用户名

Get Flag!

=================write time : 16/3 =======================

昨天week5又出了一题,,算是杂项题,上次美国的CTF出现过这类的题目。。

0x0E 听说你们想玩其他类型的题目?(Rank : 200)

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
{
'000000000000':' ',
'100000000000':'&',
'010000000000':'-',
'001000000000':'0',
'000100000000':'1',
'000010000000':'2',
'000001000000':'3',
'000000100000':'4',
'000000010000':'5',
'000000001000':'6',
'000000000100':'7',
'000000000010':'8',
'000000000001':'9',
'100100000000':'a',
'100010000000':'b',
'100001000000':'c',
'100000100000':'d',
'100000010000':'e',
'100000001000':'f',
'100000000100':'g',
'100000000010':'h',
'100000000001':'i',
'010100000000':'j',
'010010000000':'k',
'010001000000':'l',
'010000100000':'m',
'010000010000':'n',
'010000001000':'o',
'010000000100':'p',
'010000000010':'q',
'010000000001':'r',
'001100000000':'/',
'001010000000':'s',
'001001000000':'t',
'001000100000':'u',
'001000010000':'v',
'001000001000':'w',
'001000000100':'x',
'001000000010':'y',
'001000000001':'z',
'100001000010':'.',
'100000010010':'(',
'010000010010':')',
'000000010010':"'",
'000010000010':':',
'100000100010':'<',
'001000000110':'?',
'000000001010':'=',
'010010000010':'!'
}

那张图片对照着这个字典一个一个对就好了,,一竖代表一个字符,被涂黑的代表1。。。然后就一竖一竖对过去,,

Get Flag !

====================update time : 25/3======================

0x0F 上面那个太简单了(Rank : 300)

在ubuntu上,通过命令 zipinfo -v misc300_31ba4d3f387ff3e09fd77eb244288b5e

得到6个文件的CRC :
文件 ——————-> CRC
1.txt ——————-> e17b3765
2.txt ——————-> f30bdd6c
3.txt ——————-> 371083d4
4.txt ——————-> 71059cdb
5.txt ——————-> 1268bf25
6.txt ——————-> 0a4f8583

先正向 : ‘hctf{‘ 的CRC 为 e17b3765 可知这6个文件的内容合在一起就是flag。。。通过百度,知道CRC和md5一样没法逆向解密,可知这题只能通过暴力破解了,而且一个文件只有5个字节。。所以自己写个脚本暴力破解:

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
#!/usr/bin/env python
import binascii,threading,string
x = string.ascii_lowercase
x += '0123456789'
global result
result=[None,None,None,None,None]

class runcrc(threading.Thread):
def __init__(self,crr,num,fin=False):
threading.Thread.__init__(self)
self.crr = crr
self.fin = fin
self.num = num
def run(self):
for y1 in x:
for y2 in x:
for y3 in x:
for y4 in x:
if not self.fin:
for y5 in x:
yy = y1+y2+y3+y4+y5
ccc = binascii.crc32(yy) & 0xffffffff
if ccc == self.crr:
result[self.num] = yy
break

else:
yy = y1+y2+y3+y4+'}'
ccc = binascii.crc32(yy)
if ccc == self.crr:
result[self.num] = yy
break
if __name__=='__main__':
crcc = [0xf30bdd6c,0x371083d4,0x71059cdb,0x1268bf25]
for h in range(4):
ddd = runcrc(crcc[h],h)
ddd.start()
f = runcrc(0x0a4f8583,4,True)
f.start()
while(f.isAlive() or ddd.isAlive()):
pass

print 'hctf{'+''.join(result)

Get Flag!