深圳的市赛,题目一般,小卷了一天,进了线下准备去旅游。这里记录我负责的方向赛题。
Crypto
想吐槽一下,密码只有两题就算了,还用别人原题,算了,还是看看远处的雪山吧家人们。
easy_rsa
flag分成三部分了,第一部分e和phi不互素,所以求一下gcd(e,phi),再解就行;第二部分一元copper的p高位攻击,恢复p再求q;第三部分c和n公因数就是p,直接求公因数解。
1 | from Crypto.Util.number import * |
baby_rsa
根据题目条件,2^e=y(modn),所以可以直接分解2^e-y,得到比较大的就是p,大小在16位附近的就是q;最后利用威尔逊定理处理一下模同余就行。
1 | import gmpy2 |
Misc
babybit
首先用OSFMount挂载镜像,然后用DiskGenius打开G盘:
把zip文件导出来,其实里边就是注册表的备份文件:
用Register Explorer导入注册表备份文件,bitlocker的加密开始时间位于SYSTEM:ControlSet001\Control\FVEStats\OscEncryptInit,加密结束时间则位于SYSTEM:ControlSet001\Control\FVEStats\OscEncryptComplete。这里应该说是时间戳,把时间戳转为正常的date格式:
1 | import datetime |
最后还需要把date的小时加8,因为注册表中时间戳为UTC+0,需要转成UTC+8:
最后的flag:PCL{2022/6/13_15:17:39_2022/6/13_15:23:46}
Misc_water
在jpg中间部分有倒置的jpg图片hex:
想办法处理一下得到正确的jpg:
1 | f = open('jpg','rb') |
![](/.com//07/04/%E9%B9%8F%E5%9F%8E%E6%9D%AF2022/out.jpg)
题目名字叫做water,猜测盲水印,调参可以看到密码:
解压以后由张图片,看起来宽高被改过,爆破改下可以看到flag:
1 | import zlib |
简单取证
filescan发现secret.jpg:
下载之后打开发现是base64编码,解码之后发现是倒置的zip简单处理下:
1 | import base64 |
这里压缩包尾部有点问题,直接用WinRAR修复即可。
解压发现要密码,在cmdscan里面发现密码:
解压以后得到flag.txt,发现是每行是一个点的坐标使用gnuplot画图并调整为长宽相等:
扫一下:flag{a6b93e36-f097-11ec-a9b2-5254002d2b31}