南邮CTF逆向题第五道maze解题思路
来源:互联网 发布:蓝牙模块与单片机连接 编辑:程序博客网 时间:2024/06/05 17:24
如题
先百度一下名字 万一有收获呢 猜测可能考到迷宫算法
依旧是ELF
直接载入IDA
我一般习惯先shift+f12看下字符串
再看看main
__int64 __fastcall main(__int64 a1,char**a2,char**a3)
{
constchar*v3;// rsi
signed __int64 v4;// rbx
signedint v5;// eax
char v6;// bp
char v7;// al
constchar*v8;// rdi
__int64 v10;// [rsp+0h] [rbp-28h]
v10=0LL;
puts("Input flag:");
scanf("%s",&s1,0LL);//限制获取输入字符串长度为24且必须开头5个字符为"nctf{"最后一个字符位"}"
if( strlen(&s1)!=24||(v3="nctf{", strncmp(&s1,"nctf{",5uLL))||*(&byte_6010BF+24)!=125)
{
LABEL_22:
puts("Wrong flag!");
exit(-1);
}
v4=5LL;
if( strlen(&s1)-1>5)
{
while(1)
{
v5=*(&s1+ v4);
v6=0;
if( v5>78)
{
v5=(unsigned __int8)v5;
if((unsigned __int8)v5 ==79)
{
v7= sub_400650((char*)&v10+4, v3);
goto LABEL_14;
}
if( v5==111)
{
v7= sub_400660((char*)&v10+4, v3);
goto LABEL_14;
}
}
else
{
v5=(unsigned __int8)v5;
if((unsigned __int8)v5 ==46)
{
v7= sub_400670(&v10, v3);
goto LABEL_14;
}
if( v5==48)
{
v7= sub_400680(&v10, v3);
LABEL_14:
v6= v7;
goto LABEL_15;
}
}
LABEL_15:
v3=(constchar*)HIDWORD(v10);
if(!(unsigned __int8)sub_400690(asc_601060, HIDWORD(v10),(unsignedint)v10))
goto LABEL_22;
if(++v4>= strlen(&s1)-1)
{
if( v6)
break;
LABEL_20:
v8="Wrong flag!";
goto LABEL_21;
}
}
}
if( asc_601060[8*(signedint)v10+ SHIDWORD(v10)]!=35)
goto LABEL_20;
v8="Congratulations!";
LABEL_21:
puts(v8);
return0LL;
}
下边全是goto语句 我们直接将视图切为图表(Graph view)
按r可以发现
根据这四个字符"." ,"0","o" , "O"分别跳到不同的位置进行操作
我们再看下400690在搞什么鬼
想到是和601060有关
猜测是判断上面601060数组的第edi个值是否等于20h或23h,如果不等于就跳到
400822输出"wrong flag"
那么我们现在要做的就是看下601060这个地址 直接切到HEX界面
发现恰好为一个八阶方阵,而且数值只有3个,分别为20h,2Ah以及23h
那么函数400690的意思不就是判断当前的位置是否是从(0,0)走到(4,4),最初的四个跳转应该就是对应着上下左右四个方向
20 20 2A 2A 2A 2A 2A 2A
2A 20 20 20 2A 20 20 2A
2A 2A 2A 20 2A 20 2A 2A
2A 2A 20 20 2A 20 2A 2A
2A 20 20 2A 23 20 20 2A
2A 2A 20 2A 2A 2A 20 2A
2A 2A 20 20 20 20 20 2A
2A 2A 2A 2A 2A 2A 2A 2A
那么上下左右分别对应字符"." "0" "O" "o"
路径为:右下右右下下左下下下右右右右上上左左
o0oo00O000oooo..OO
还没完,记得要加上nctf{}
我们得到flag为nctf{o0oo00O000oooo..OO}
- 南邮CTF逆向题第五道maze解题思路
- 南邮CTF逆向题第二道ReadAsm2解题思路
- 南邮CTF逆向题第三道Py交易解题思路
- 南邮CTF逆向题第四道WxyVM解题思路
- 南邮CTF逆向题第六道WxyV2解题思路
- 南邮CTF逆向题第一道Hello,RE!解题思路
- 170708 逆向-南邮CTF逆向(maze)
- 南邮ctf逆向最后一题
- CTF安卓逆向练习第五弹
- 看雪CTF 2017 第六题设计思路和解题思路
- 170707 逆向-南邮CTF逆向(WxyVM1)
- WHCTF 2017 逆向题 CRACKME、BABYRE、EASYHOOK 的解题思路
- 170706 逆向-南邮CTF平台(1-3)
- 170818 逆向-南邮CTF(WxyVM2)
- 一道逆向CTF题-read asm详解
- 实验吧CTF逆向题1000writeup
- 逆向CTF (linux)
- CTF dotNet逆向分析
- 想学好python,但是发现,学习没方向了!
- google cache
- 人工神经网络概念
- SEM竞价推广恶意点击会产生广告费吗
- 【代码篇】171224 一些常用的结构
- 南邮CTF逆向题第五道maze解题思路
- leetcode Friend Circles
- EDA组合电路的Verilog设计
- 遍历Map的四种方法
- 免费教材丨第53期:AI 圣经《深度学习》高清中文版
- SparkSQL3
- BGP漫谈
- MongodDB后台启动
- EDA时序电路的Verilog设计