-
-
[原创]KCTF2024 第四题 神秘信号
-
发表于: 2024-8-21 13:08 3478
-
凑 + 猜
题目给了一对账号和验证码,观察发现验证码为16位的账号穿插12位的Hello World!
先找规律,猜一下可能的算法逻辑。我这里猜测,算法会将账号分割为5个部分,这将产生4个间隙,插入间隙的长度都是3位,长度不超过分割出来的每个部分的长度
由上述推断,可以猜测Hello World!
也会分为多个多个部分插入到KCTF
的间隙中。这里先将KCTF
分为2个部分,为了不超过每个部分的长度,先按照顺序插入2位He
到间隙中。形成新的字符串后,继续按照上述逻辑插入。最后得到字符串KClWorlHeld!o TF
,然后代入题目,发现不对
接下来正经做一下,使用pyinstxtractor和uncompyle6试图还原python,但是不知道是不是版本的问题,uncompyle6反编译pyc的时候总是出错。遂放弃,直接将题目拖入x64dbg去看看,先在memcmp
、strstr
这类函数下断点,看看有没有可能直接出现答案,然后发现有一处的memcmp
执行后,就会出现Fail/Success的字样。此处会判断2个字符串的值,若相同,则能通过校验。经过测试,这里rcx会存放着正确验证码对应的字符串
先用刚刚错误的验证码KClWorlHeld!o TF
试试看。发现有很多相同的地方,改改顺序也许能出
看到这个51 51
应该放在第二行,而目前是在第一行开头。对应的就是K
的位置。所以先把K
调到后面看看能不能凑出来后半部分,这里将验证码修改为ClWorlHelKd!o TF
。结果和预想的有差距,把原本正确的位置给修改了。但是无意中凑出来了开头的部分。而这个开头的部分刚好就在K
的前面,也就是Hel
这时再把Hel
调到开头再看看情况,修改验证码为HeClWorllKd!o TF
发现开头能对上了,以Hel
开始,结尾也是对的,以TF
结束。中间也有能对上的情况,但是需要改一下位置。再结合常见flag的形式。猜一猜,结果也就出来了
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [原创]KCTF2024 第九题 第一次接触 3175
- [原创]KCTF2024 第四题 神秘信号 3479
- [原创]KCTF2024 第二题 星际生物 5178
- [原创]KCTF2022春季赛 第九题 同归于尽 13053
- [原创]KCTF2022春季赛 第七题 一触即发 9726