BugkuCTF Take the maze

本文介绍了在BugkuCTF中的一道题目,涉及到解密一个基于迷宫的挑战。通过分析和逆向工程,作者揭示了如何通过输入特定的字符串来解决这个谜题,并最终得到Flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BugkuCTF
Take the maze
挺好的一题,一个box加上vm的题目
首先,查壳,无壳。
首先,先拖进ida,解析,看见
if ( sub_45E593((int)input) )
{
puts(“done!!!The flag is your input\n”);
sub_45D9C7(4);
sub_45E1B5();
}
输出flag的函数,追进去,发现
v1 = j__fopen(“flag.png”, “wb”);
j__fwrite(&unk_5409C0, 1u, 0x78Au, v1);
j__fclose(v1);
puts(“print finished,view the path to this file,you will get a png file,have a good time\n\n\n”);
这边会生成一个flag.png文件,拖进od,载入后先单步向下 遇到向上跳转就在下一行按F4,遇到调向失败的就修改z标志位,一直到跳到最后。发现生成了一个flag,png,美滋滋
得到二维码,
扫码得到:Congratulations! The flag is your input + “Docupa”
哦,好吧,不存在捷径果然。
if ( sub_45E593((int)input) )
{
puts(“done!!!The flag is your input\n”);
sub_45D9C7(a1, 4);
sub_45E1B5(a1);
}
这边有个check函数,追踪进去
发现要么返回result,要么是v5==311,那么要返回是1,就是v5=311,那v5其实就是迷宫了
之后看了下,发现输入的0,1,2,3决定了操作函数,而5,6,7,8,9,a,b,c,d,e,f则是重复的次数按照函数-次数的形式输入
switch ( byte_541168[v8] )
{
case ‘d’: // 0
su

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值