首页
社区
课程
招聘
[原创]KCTF2024 第四题 神秘信号
发表于: 2024-8-21 13:08 2748

[原创]KCTF2024 第四题 神秘信号

2024-8-21 13:08
2748

凑 + 猜

题目给了一对账号和验证码,观察发现验证码为16位的账号穿插12位的Hello World!

先找规律,猜一下可能的算法逻辑。我这里猜测,算法会将账号分割为5个部分,这将产生4个间隙,插入间隙的长度都是3位,长度不超过分割出来的每个部分的长度

由上述推断,可以猜测Hello World!也会分为多个多个部分插入到KCTF的间隙中。这里先将KCTF分为2个部分,为了不超过每个部分的长度,先按照顺序插入2位He到间隙中。形成新的字符串后,继续按照上述逻辑插入。最后得到字符串KClWorlHeld!o TF,然后代入题目,发现不对

接下来正经做一下,使用pyinstxtractor和uncompyle6试图还原python,但是不知道是不是版本的问题,uncompyle6反编译pyc的时候总是出错。遂放弃,直接将题目拖入x64dbg去看看,先在memcmpstrstr这类函数下断点,看看有没有可能直接出现答案,然后发现有一处的memcmp执行后,就会出现Fail/Success的字样。此处会判断2个字符串的值,若相同,则能通过校验。经过测试,这里rcx会存放着正确验证码对应的字符串

先用刚刚错误的验证码KClWorlHeld!o TF试试看。发现有很多相同的地方,改改顺序也许能出

看到这个51 51应该放在第二行,而目前是在第一行开头。对应的就是K的位置。所以先把K调到后面看看能不能凑出来后半部分,这里将验证码修改为ClWorlHelKd!o TF。结果和预想的有差距,把原本正确的位置给修改了。但是无意中凑出来了开头的部分。而这个开头的部分刚好就在K的前面,也就是Hel

这时再把Hel调到开头再看看情况,修改验证码为HeClWorllKd!o TF

发现开头能对上了,以Hel开始,结尾也是对的,以TF结束。中间也有能对上的情况,但是需要改一下位置。再结合常见flag的形式。猜一猜,结果也就出来了


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2024-8-21 13:08 被Ally Switch编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//