UCATFLAGS-WP

这里是backdoor的逆天解,在群主大人的解析里也有提到,这个代码是对FLAG的所有字符构建了一个置换映射,只需还原出这个置换表即可。但是,如果我们不会用Pytorch,或者电脑安装不了Pytorch,该怎么做这个题目呢?很简单,我们只需要把这个置换表猜出来就好了。(doge)

我们可以看到,pred_flag = '0kRs34Rc2lta!a!!!aggg}t_BaUDyBs!yBVyCBfBMCBhRYVHtt{{{{gu',也就是flag里面是有

!0234BCDHMRUVY_acfghklstuy}{

这28种字符的。接下来我们开始猜测这个置换表:

首先,众所周知,Flag的前10个字符必是ucatflags{,最后一个字符必是},因此,就有了:

0—u k—c R—a s—t 3—f 4—l c—g 2—s l—{ u—}

这已经出来10组对应关系了,还剩18组。然后我们在做了这么多题后,也得到了一个结论,Flag里面经常会使用_这个字符作为单词之间的分隔符,然后我们观察这个pred_flag,这其中最像代替_的字符显然是出现了多次,每两次之间都有一定间隔的B。此外,我们知道原Flag中是有!的,那么大概率倒数第二个字符会是!,注意到pred_flag中倒数第二个字符是g,而gpred_flag中另一次出现是连着出来了3个,连着3个感叹号很合理,因此我们可以猜测g代表的就是!,于是就有:

B—_ g—!

接下来,注意到pred_flag在其中两个B之间夹了一个s!y,其中s已经确定是代表t了,在frequecy那道题中,我们学习了频率分析法,其中有一个很重要的点,就是the这个词出现的频率会比较高。那么我们可以大胆假设这个s!y就是表示的the,注意到字符表中同时有大写H和小写h,先不妨猜测!表示的是小写h,然后注意到字符表中没有E或者e,但是有3,已知Flag中经常使用3代替e,故猜测y表示的是3,于是就有:

!—h y—3

注意到在连着三个g(!)前面是ta!a!!!a,已知!对应的是h,且在连着的三个g(!)前面大概率会是一个感叹词,那么有h的感叹词很可能会是oh。那么t就对应的是0(因为字符表中没有o),那么为什么后面又有a又有!呢?最有可能的情况就是这是大小写的H混在了一起,之前假设的!对应h,那么a对应的就应该是H,于是就有:

t—0 a—H

我们现在注意到最后一个B(_)和倒数第二个字符u(!)之间有hR(a)YVHt(0)t(0){{{{,结合这道题目的名字叫backdoor,我们可以去猜测h对应BY对应CV对应kH对应D{对应R,刚好组成了一个backdoor,十分合理,于是就有:

h—B Y—C V—k H—D {—R

接着注意到在前两个B(_)中间夹了一个a(H)UDy(3),以h开头,e结尾的长度为4个字母的单词第一反应就是have吧,那么D就对应V,但是已经确定了对应a的是R了,U对应的一定不是a,而字符表中又没有A,怎么办呢?结合之前的经验,Flag中常使用4代替A,那么我们就可以假设U对应的是4,于是就有:

U—4 D—V

根据英文中的语法,这个have后面一个词是the,那么这个have就一定不是助动词,那就大概率会是实义动词,前面就应当有个主语。而前面一个单词是}t(0)_,长度为3个字母,中间为o的主语,也就只能是you了,但是现在同时有大写Y和小写y,这个}只出现了这一次,是大写Y的概率会大得多,于是就有:

}—Y _—U

这时注意第三、四个B(_)中间的那个单词V(k)y(3)C,显然是key,于是就有:

C—y

现在已经出来26组对应关系了,还差2组,此时我们的Flag

ucatflags{0HhHhhhH!!!Y0U_H4V3_th3_k3y_(f)_(M)y_BaCkD00RRRR!}

还差fM没找到对应了,此时映射的右边也只有2M没有被对应了,然后我们注意到,如果让M对应M,就组成了单词my,剩下的f夹在keymy backdoor之间,那么f表示2,也就是to,十分合理,于是就有:

M—M f—2

那么我们的Flag就是

ucatflags{0HhHhhhH!!!Y0U_H4V3_th3_k3y_2_My_BaCkD00RRRR!}

提交到网站上是错误的,我们反思一下可能是哪里出现了问题。目前最有可能有问题的就两点,一点是Hh搞反,另一点是Yy搞反,相比之下显然是Hh搞反概率更大,于是我们将Flag中的Hh全部对调一下,就成了:

ucatflags{0hHhHHHh!!!Y0U_h4V3_tH3_k3y_2_My_BaCkD00RRRR!}

提交到网站上,Correct!