ASIS_CTF2023
type
status
date
slug
tags
summary
category
icon
password
赛中做了算三个吧,sid有点小变态,爆出来了,但是没找到flag,经别的师傅点醒才知道没有格式,反正么只是来看看题而已,作业好多还要上学...
9-25: 小补一个题,解数毕竟比sid多,虽然说题越做越多,能做的题确实越来越少了,高手题几乎完全没法碰...
grid
warmup题,加密逻辑很简单,就是对着box反映射一下
buzz
对于flag的每一位加密,打印的BUZZ[]数量可以转化为数字,即加密后的数
ios的没设备没环境不能调,否则直接打印一张大映射表就行,只能硬逆,好在逻辑比较简单
但其实不好看,这个逻辑不知道怎么做的编译器优化,很抽象
不过可以辨认出
xor
shl
*55
+ 97
+44
等操作,其中*55
这个会生成一个比较大的数,可以根据这个判断,发现是每七位一组循环加密先提取
enc[]
介于加密逻辑不能调确实静态看挺麻烦的,反正就猜猜测测拿到exp.py:
sid
cpp玩意跟混淆了一样...真的难顶
不过其实也就用了点
stl string
多做点可以猜猜坏了,现在复盘的时候发现了,前面已经截掉
ASIS{
了,昨天爆破的头晕眼花了把这事给忘了...有些大数操作看起来是编译器优化的产物,动调过去就知道没啥用了
主要加密逻辑(已经手动写了符号):
其中比较难逆的就是
string_append_and_some_kind_of_enc
这个玩意(低水平起名)里面都是很看不懂的大数操作和string操作
不过进来就可以看到特征数了
注意这里还做了魔改,这个some_enc看起来就是流加密
chacha20
或者salsa20
的流密钥初始化,但是他下面还加了异或随机数分别写chacha20脚本和salsa脚本测试一下:
发现
chacha20
得到的是2个*16组的随机数,故而确定这里是chacha20+随机数
的流加密魔改除此之外,还有几个
xor
操作,比较好逆,结合看一下最后的输出,就有整个流程:解密时需要爆破四个随机数...0xff ^ 4的解空间,这里用的是python硬爆,需要12小时
毕竟不是冲分比赛,如果是的话可以到此找台队里好的电脑或者服务开爆(×)
不过自己做可以想想优化,可以看到
pass
全程都是被流加密的,原理上只做了单位异或也就是说可以少爆一个random值,爆破两次,分别拿到flag的奇偶位,这样就是
0xff ^ 3 * 2
的解空间,而0xff ^ 3
大概是四分钟左右再做一点细微优化,可以缩减到两分半钟每次,那么总的单次爆破时间就缩减到了六分钟,调试和debug变得基本可行(本身流程比较复杂确实也没有一次写对,犯低级错误浪费时间了)
然后大概优化一下判断匹配标准,并且把奇偶位拼接上,基本上就是最后脚本了(个人还是觉得这里的一步步想法推进挺有意思的,就是debug过程很痛苦,每调一次就得在一堆乱七八糟的玩意里找乱七八糟的flag,这里把ASIS{的标志位留下来感觉体验会好很多...)
这里最后的版本需要肉眼在六百多条里面找真flag,应该算目前我能想的最优的爆破了,大概效果如下(还是相当精神污染的,可能是自己题做少了也说不准...):
(后话:结果是python本身Crypto库的瓶颈,导致需要这样优化,其他师傅自己cpp写的满0xff ^ 4空间的爆破也就十几分钟左右,同样空间下python就得十几个小时了...)
scrat
这个题其实和sid差不多,也是麻烦的加密和爆破(解数比sid多的原因完全可能是很多师傅和我一开始一样sid爆出来了但是没看见flag)
yysy,算是练习调试、
cpp string
导致的一些奇怪的汇编代码、猜测能力吧,新东西确实没有啥了几处加密:
流程:
exp.py (比赛结束了抄个JANlittle师傅的,感觉基本功确实还缺点qaq)
上一篇
vsCTF
下一篇
蓝帽2023半决
Loading...