2024 UofTCTF re wp

2024 UofTCTF re wp_第1张图片

CSS Password

2024 UofTCTF re wp_第2张图片

给了一个html文件,拖进浏览器

2024 UofTCTF re wp_第3张图片

F12打开控制台,其中五个小球的初始背景为绿色,只是被红色的给覆盖了

2024 UofTCTF re wp_第4张图片

2024 UofTCTF re wp_第5张图片

在网页源码中能看到以下代码,结合GPT能大致理解,即当byte1的第七位为set时会把第一个check_state移开。一共十九个byte,一一设置好就行

2024 UofTCTF re wp_第6张图片

2024 UofTCTF re wp_第7张图片

All Worbled Up

2024 UofTCTF re wp_第8张图片

文本编辑器打开附件

2024 UofTCTF re wp_第9张图片

是python的字节码。可以结合GPT大概还原源代码,居然被看出来是CTF题目了

2024 UofTCTF re wp_第10张图片

修复后,完整代码如下

2024 UofTCTF re wp_第11张图片

如果要爆破,一共九位字符,每位字符有七种情况,那么也就是7的9次方,四千多万次。开干,脚本

2024 UofTCTF re wp_第12张图片

这里需要注意的是,在字节码中是调用了shmorble这个函数来取逆序字符串的,但是发现题意中给的字符是没用这个函数的,导致我第一遍跑完了整个过程。。实际上爆破也就两三分钟

2024 UofTCTF re wp_第13张图片

Random Maze

2024 UofTCTF re wp_第14张图片

 

附件拖入ida

2024 UofTCTF re wp_第15张图片

这里要注意,输入格式是%lx即把输入看成十六进制

2024 UofTCTF re wp_第16张图片

main中两个函数。一个是如果输入不满足条件则调用退出的函数

2024 UofTCTF re wp_第17张图片

2024 UofTCTF re wp_第18张图片

而cur是个指针,最后一层是个函数指针,输出flag

2024 UofTCTF re wp_第19张图片

2024 UofTCTF re wp_第20张图片

仔细观察traverse函数中涉及输入的运算,可以发现其实只要知道第一个字节就能反推其它所有字节。结合各种限制,求第一个字节的可能值。脚本。这里为什么要倒序输出,是因为在调试时发现在写入输入字符串时也是按照小端序写入的,所以第一个要应该被程序处理的字节应该放在最低位。更换第一个字节的值,多次尝试,最后发现当第一个字节为0x2E时可行

2024 UofTCTF re wp_第21张图片

2024 UofTCTF re wp_第22张图片

Love Debug

2024 UofTCTF re wp_第23张图片 

附件拖入ida

2024 UofTCTF re wp_第24张图片

只有一个四千多行的start函数,可以观察到是通过系统调用来输入输出以及退出

2024 UofTCTF re wp_第25张图片

所以自然而然就想能不能定位到输入部分,所以搜索mov edi,0,因为write是mov edi,1嘛

2024 UofTCTF re wp_第26张图片2024 UofTCTF re wp_第27张图片

发现有两处,但是有一处是exit,所以程序只有唯一的输入处

2024 UofTCTF re wp_第28张图片

下断点运行

2024 UofTCTF re wp_第29张图片

尝试查看输入的buffer区域即r8寄存器的值,发现地址附近直接出现flag

CEO’s Lost Password 

 2024 UofTCTF re wp_第30张图片

附件用jeb打开

2024 UofTCTF re wp_第31张图片

直接把所有代码复制到新建的Java项目中

2024 UofTCTF re wp_第32张图片

最主要是Main.a方法

2024 UofTCTF re wp_第33张图片

2024 UofTCTF re wp_第34张图片

调试发现,输入密码后,验证部分先调用a类的a方法,里面再调用Main的另一个a方法

2024 UofTCTF re wp_第35张图片

下面就是对输入具体做处理的函数

2024 UofTCTF re wp_第36张图片

经过观察可以发现每位字节的运算虽然看起来复杂,但是涉及到的变量也就三个,自身、索引和循环次数,其它都是常量,所以是可以直接爆破的。脚本

2024 UofTCTF re wp_第37张图片

这里有一点要注意,从String.getBytes后,要把前两项去掉然后再解码

2024 UofTCTF re wp_第38张图片

2024 UofTCTF re wp_第39张图片

总结 

如果有哪里写错了,请邮件[email protected]

最后。我好菜啊,呜呜┭┮﹏┭┮,只能打打大佬们都不打的比赛,想找大佬带带

 

你可能感兴趣的:(软件工程)