甘佬在昨天抽了个奖
https://linux.do/t/topic/37787
甘佬提前将楼层压缩包发出来,到时间再公开密码,看起来不会有什么问题。
让我以一个CTF萌新的视角来看看
打开压缩包,可以看到里面只有一个文件,且文件大小为7字节,并且能看到文件的CRC为
0b636e9a
根据甘佬的提示,2个中奖楼层,且大于100
猜测文件格式为 楼层号某个字符楼层号 ,这样正好7字节
已有信息已经足够破解文件内容了,代码如下
import java.util.zip.CRC32;
public class X {
public static void main(String[] args) {
String r = "0b636e9a";
String concat = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\n\t";
for (int i = 100; i <= 500; i++) {
for (int j = 100; j <= 500; j++) {
for (int k = 0; k < concat.length(); k++) {
String input = "" + i + concat.charAt(k) + j;
if (crc(input).equals(r)) {
System.out.printf("%d %d", i, j);
return;
}
}
}
}
}
static String crc(String s) {
CRC32 crc32 = new CRC32();
crc32.update(s.getBytes());
return String.format("%08x", crc32.getValue());
}
}
结果
136 200
我看很多人还是没理解这次的破解原理,说什么换摘要算法,把密码加长,其实这两种都没用
本质是文件太小,只有7字节
因为文件太小且格式可猜,因此我上面的代码使用的是枚举文件内容,计算枚举到的文件内容的CRC和zip里看到的CRC是否一致,你换其它摘要算法我破解代码跟着换就行,破解时也并没有涉及到密码