re
Garden
下载附件后是pyc文件,就直接反编译查看源码,我用的在线工具反编译就行:
#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
import platform
import sys
import marshal
import types
//下面的代码才是我们需要注意的源码
def check(s)://最重要的就是check函数
f = '2(88\x006\x1a\x10\x10\x1aIKIJ+\x1a\x10\x10\x1a\x06'//flag的长度等于f的长度
if len(s) != len(f):
return False
checksum = None
for a, b in zip(f, s):
checksum += ord(b) ^ ord(a) ^ 123
return checksum == 0
if sys.version_info.major != 2 or sys.version_info.minor != 7:
sys.exit('\xe8\xaf\x95\xe8\xaf\x95 Python 2.7.')
if len(sys.argv) != 2:
sys.exit('usage: bronze.pyc <flag>')
flag = sys.argv[1]
if len(flag) >= 32:
print '\xe5\xa4\xaa\xe9\x95\xbf\xe4\xba\x86.'
sys.exit(1)
alphabet = set('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789{}!@#$%+')
for ch in flag:
if ch not in alphabet:
print '\xe4\xb8\x8d\xe5\xaf\xb9.'
sys.exit(1)
continue
if check(flag):
print '\xe5\xb0\xb1\xe6\x98\xaf\xe8\xbf\x99\xe4\xb8\xaa!'
sys.exit(0)
else:
print '\xe6\x90\x9e\xe9\x94\x99\xe4\xba\x86.'
sys.exit(1)
看到这,直接上脚本:
s = '2(88\x006\x1a\x10\x10\x1aIKIJ+\x1a\x10\x10\x1a\x06'
flag = ''
for i in s:
flag += chr(ord(i)^123)
print(flag)
运行得到flag:ISCC{Makka2021Pakka}
Analysis
一般情况下直接查壳:
文件是32位的且没壳,直接拖入IDA分析:
跟进,然后查看伪代码:
然后,我们在进入mix进行查看:
然后就自己用脚本逆一下就好了:
cpt = [67,-33,20,3,13,44,9,1,23,23,8,-4,43,-6,20,23,-7,37,-11,34,61,-50,24,22,10]
mix = [82,69,86,69,82,83,69]
for k in range(len(mix)):
mix[k] %= 64
for n in range(len(cpt)):
if mix[n%7] & 1:
cpt[n] -= 2
else:
cpt[n] -= 1
for m in range(len(cpt)//2):
x = cpt[m]
cpt[m] = cpt[len(cpt)-1-m]
cpt[len(cpt)-1-m] = x
for l in range(len(cpt)):
cpt[l] -= mix[l%7]
for j in range(len(cpt)-2,-1,-1):
cpt[j] += cpt[j+1]
for i in range(len(cpt)):
cpt[i] += 64
for i in range(len(cpt)):
cpt[i] = chr(cpt[i])
flag = ''.join(cpt)
print(flag)
运行后得到的flag:ISCC{REVERSE_IS_NOT_HARD}
(作为一个二进制手,我二进制练武题就写出来这两个,还是太拉跨了,无地自容了都。。。。。。。)
MISC
Retrieve the passcode
1:3:1
1.25:3:1
1.5:3:1
1.75:3:1
2:3:1
2:2.75:1
2:2.5:1
2:2.25:1
2:2:1
2:1.75:1
2:1.5:1
1:2.25:1
1.25:2.25:1
1.5:2.25:1
1.75:2.25:1
1:1.5:1
1.25:1.5:1
1.5:1.5:1
1.75:1.5:1
3:3:1
3.25:3:1
3.5:3:1
3.75:3:1
4:3:1
3.25:2.25:1
3.5:2.25:1
3.75:2.25:1
4:2.25:1
4:2:1
4:1.75:1
4:1.5:1
3:1.5:1
3.25:1.5:1
3.5:1.5:1
3.75:1.5:1
3:1.75:1
3:2:1
3:2.25:1
3:2.5:1
3:2.75:1
5:3:1
5.25:3:1
5.5:3:1
5.75:3:1
6:3:1
6:2.25:1
6:2:1
6:1.75:1
6:1.5:1
5.75:1.5:1
5.5:1.5:1
5.25:1.5:1
5:1.5:1
5:2.25:1
5.25:2.25:1
5.5:2.25:1
5.75:2.25:1
5:2.5:1
5:2.75:1
7:3:1
7.25:3:1
7.5:3:1
7.75:3:1
8:3:1
8:2.75:1
8:2.5:1
8:2.25:1
8:2:1
8:1.75:1
8:1.5:1
9:3:1
9.25:3:1
9.5:3:1
9.75:3:1
10:3:1
10:2.75:1
10:2.5:1
10:2.25:1
9.75:2.25:1
9.5:2.25:1
9.25:2.25:1
9:2.25:1
9:2:1
9:1.75:1
9:1.5:1
9.25:1.5:1
9.5:1.5:1
9.75:1.5:1
10:1.5:1
11:3:1
11.25:3:1
11.5:3:1
11.75:3:1
12:3:1
12:2.75:1
12:2.5:1
12:2.25:1
12:2:1
12:1.75:1
12:1.5:1
11.75:1.5:1
11.5:1.5:1
11.25:1.5:1
11:1.5:1
11:1.75:1
11:2:1
11:2.25:1
11:2.5:1
11:2.75:1
11.25:2.25:1
11.5:2.25:1
11.75:2.25:1
其实最开始的时候,下载下来不是这样的,还是得观察以下的,题目描述里的Scatter还是很有用的,很值得关注,下面就上脚本了,脚本是在网上找的:
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
dot1 = [[1, 3, 1], [1.25, 3, 1], [1.5, 3, 1], [1.75, 3, 1], [2, 3, 1], [2, 2.75, 1], [2, 2.5, 1], [2, 2.25, 1], [2, 2, 1], [2, 1.75, 1], [2, 1.5, 1], [1, 2.25, 1], [1.25, 2.25, 1], [1.5, 2.25, 1], [1.75, 2.25, 1], [1, 1.5, 1], [1.25, 1.5, 1], [1.5, 1.5, 1], [1.75, 1.5, 1], [3, 3, 1], [3.25, 3, 1], [3.5, 3, 1], [3.75, 3, 1], [4, 3, 1], [3.25, 2.25, 1], [3.5, 2.25, 1], [3.75, 2.25, 1], [4, 2.25, 1], [4, 2, 1], [4, 1.75, 1], [4, 1.5, 1], [3, 1.5, 1], [3.25, 1.5, 1], [3.5, 1.5, 1], [3.75, 1.5, 1], [3, 1.75, 1], [3, 2, 1], [3, 2.25, 1], [3, 2.5, 1], [3, 2.75, 1], [5, 3, 1], [5.25, 3, 1], [5.5, 3, 1], [5.75, 3, 1], [6, 3, 1], [6, 2.25, 1], [6, 2, 1], [6, 1.75, 1], [6, 1.5, 1], [5.75, 1.5, 1], [5.5, 1.5, 1], [5.25, 1.5, 1], [5, 1.5, 1], [5, 2.25, 1], [5.25, 2.25, 1], [5.5, 2.25, 1], [5.75, 2.25, 1], [5, 2.5, 1], [5, 2.75, 1], [7, 3, 1], [7.25, 3, 1], [7.5, 3, 1], [7.75, 3, 1], [8, 3, 1], [8, 2.75, 1], [8, 2.5, 1], [8, 2.25, 1], [8, 2, 1], [8, 1.75, 1], [8, 1.5, 1], [9, 3, 1], [9.25, 3, 1], [9.5, 3, 1], [9.75, 3, 1], [10, 3, 1], [10, 2.75, 1], [10, 2.5, 1], [10, 2.25, 1], [9.75, 2.25, 1], [9.5, 2.25, 1], [9.25, 2.25, 1], [9, 2.25, 1], [9, 2, 1], [9, 1.75, 1], [9, 1.5, 1], [9.25, 1.5, 1], [9.5, 1.5, 1], [9.75, 1.5, 1], [10, 1.5, 1], [11, 3, 1], [11.25, 3, 1], [11.5, 3, 1], [11.75, 3, 1], [12, 3, 1], [12, 2.75, 1], [12, 2.5, 1], [12, 2.25, 1], [12, 2, 1], [12, 1.75, 1], [12, 1.5, 1], [11.75, 1.5, 1], [11.5, 1.5, 1], [11.25, 1.5, 1], [11, 1.5, 1], [11, 1.75, 1], [11, 2, 1], [11, 2.25, 1], [11, 2.5, 1], [11, 2.75, 1], [11.25, 2.25, 1], [11.5, 2.25, 1], [11.75, 2.25, 1]] # 得到五个点
plt.figure()
ax1 = plt.axes(projection='3d')
ax1.set_xlim(0, 11) #X轴
ax1.set_zlim(11, 0) #Z轴
ax1.set_ylim(0, 11) #Y轴
color1 = ['r', 'g', 'b', 'k', 'm']
marker1 = ['o', 'v', '1', 's', 'H']
i = 0
for x in dot1:
ax1.scatter(x[0], x[1], x[2], c=color1[1],
marker=marker1[1], linewidths=4)
i += 1
plt.show()
运行后得到
得到解密的密码:365728
输入后会得到:
将最下面的摩斯密码解密得到:
congratulationtheflagischallengeiscctwozerotwoone
然后得到flag:ISCC{congratulationtheflagischallengeiscctwozerotwoone}
海市蜃楼-1
将下载的文件打开是:
这种题其实我也是第一次见,然后还是在别人说的情况下做出来的,将解压的文件docx文件后缀改为zip,然后解压:
我用的是WPS表格打开的:
比较明显:ISCC{zheshishui}
我的折扣是多少
这题海慧寺比较简单的,首先将give.exe运行:
pass1{
\u006b\u0072\u0077}
这是一串unicode加密,,解密后得到:pass1{krw}
(这是前一部分密码)
将me.zip在winhex中打开,然后会有:
再结尾是一段base64加密,解密后得到:pass2{gcc666}
(这是后一部分密码)所以压缩包口令为krwgcc666
,解压得到
eW91Zm91bmRtZT8=
base64解密得到:
好在看见过音频隐写的题,然后就猜到它是mp3音频隐写,密码是:
youfoundme?
解密音频:
decode -X -P youfoundme? discount.mp3
将音频解密后得到:
ISCC{
LFXXK4TENFZWG33VNZ2DELRRGU======}
然后base32解密,最终的flag:ISCC{Yourdiscount2.15}
美人计
我么你下载附件,里面打开会有一张二维码,还有一个美女的图片,二维码扫码后得到:
U2FsdGVkX1/Ka+sScszwQkwhO+VLiJwV/6IFg5W+TfNHGxG2qZsIr2iwMwb9X9Iu 3GuGWmPOtO27z8vNppD2D50fwsD+8VWhdtW9J4cewYivH/Z/7GoUvcJXJMrvf+vu +CBqWDGp6HWd0e5whGhuzlK0ZtBcDZdPDSIHA7+GuUlifp8PcFCtJPgiuk143REE +pKFiSJXolXLR1vJCdGY9w5mXFbiWPrb2U7r/v5noP8=
然后占时也不知道是什么加密,我们再去看图片,在图片的属性中有:
Try AES, and you will get the flag. ISCC2021
根据提示我么可以知道,上面的加密是AES加密,然后密钥是:ISCC2021
对密文进行三次的AES解密,将得到:
y0u_h@ve_fal1en_intO_tHe_tr@p_0f_tHe_be@uty_!
好家伙,到时得到的时候,我还开心一下,结果咦提交,结果啪啪打脸,我都醉了,最后,还是通过将word文档改为zip的压缩包,解压,我是一个一个看的,最后在word\media里面,看见有两张二维码,不过有一张是最开始的那一张,另一张扫描后的结果:
U2FsdGVkX19eOY/pDh8+vPAcvfkLi1XLUneVzjLLOMul53sKK8UpobdCOiPIv4KE
最开始,我以为也还是AES加密,结果发现说是解密错误,就尝试了DES解密,最后的解密结果为:
结果即为:ISCC{be@uty_1ike$_Y0u_2O2lISCC}
李华的红包
我们自开始当然要用winhex对jpg图片进行更改高度,不过在改的时候,发现在结尾处,有txt,说明里面是有txt文件的:
然后再binwalk分离,得到rar压缩包,解压得到:
24,43,13,13,12,21,43
不过,得到这个的时候,我还是有点小迷的,不知道这是啥(不过我觉得主要是题见得少了),然后就继续对图片的高度进行更改,最开始图片的像素:541*348,很明显,图片的高度不够,将图片的高,改为和宽一样的541,改完后,保存,得到:
这个鼓的意思就很明显了,应该就是敲击码了,于是就有
在线解密一下得到:
提交最后的flag:ISCCBFS
其实还是有点离谱的,银行密码就6位,但是这个有7位。。。。
web
ISCC客服冲冲冲(一)
这道题还是很简单的,我用的是,f12后直接更改两个客服的位置,然后继续刷票,但是要记住,要早点安f12,不然可能票数赶不上,然后就可以得到flag:ISCC{1SCC_2o2l_KeFuu}
,没啥好说的。
这是啥
F12后,会在源码中发现jsfuck
编码:
+!![]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]]+(+{
}+[])[+!![]]+(!![]+[])[+[]]+([][[]]+[])[!+[]+!![]+!![]+!![]+!![]]+([]+{
})[+!![]]+([][[]]+[])[+!![]])())[!+[]+!![]+!![]]+([][[]]+[])[!+[]+!![]+!![]])()([][(![]+[])[!+[]+!![]+!![]]+([]+{
})[+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]][([]+{
})[!+[]+!![]+!![]+!![]+!![]]+([]+{
})[+!![]]+([][[]]+[])[+!![]]+(![]+[])[!+[]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]]+(!![]+[])[+[]]+([]+{
})[+!![]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+([][[]]+[])[!+[]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]+!![]+!![]]+([][[]]+[])[!+[]+!![]+!![]]+(![]+[])[!+[]+!![]+!![]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]]+(+{
}+[])[+!![]]+([]+[][(![]+[])[!+[]+!![]+!![]]+([]+{
})[+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]][([]+{
})[!+[]+!![]+!![]+!![]+!![]]+([]+{
})[+!![]]+([][[]]+[])[+!![]]+(![]+[])[!+[]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]]+(!![]+[])[+[]]+([]+{
})[+!![]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+([][[]]+[])[!+[]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+!![]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]+!![]+!![]]+(![]+[])[!+[]+!![]]+([]+{
})[+!![]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]]+(+{
}+[])[+!![]]+(!![]+[])[+[]]+([][[]]+[])[!+[]+!![]+!![]+!![]+!![]]+([]+{
})[+!![]]+([][[]]+[])[+!![]])())[!+[]+!![]+!![]]+([][[]]+[])[!+[]+!![]+!![]])()(([]+{
})[+[]])[+[]]+(!+[]+!![]+[])+(+{
}+[])[+!![]])+[][(![]+[])[!+[]+!![]+!![]]+([]+{
})[+!![]]+(!![]+[])[+!![]]+(!![]+[])[+[]]][([]+{
})[!+[]+!![]+!![]+!![]+!![]]+([]+{
})[+!![]]+([][[]]+[])[+!![]]+(![]+[])[!+[]+!![]+!![]]+(!![]+[])[+[]]+(!![]+[])[+!![]]+([][[]]+[])[+[]]+([]+{
})[!+[]+!![]+!![]+!![]+!![]]+(!![]+[])[+[]]+([]+{
})[+!![]]+(!![]+[])[+!![]]]((!![]+[])[+!![]]+([][[]]+[])[!+[]+!![]+!![]]+(!![]+[])[+[]]+([][[]]+[])[