Hello, CTF
2024-09-06 20:00:49
0x01
拿到题目后查壳,发现什么也没有,32位vc++
0x02
放到IDA里,F5反编译,得到下图
很容易我们就看到了比较的函数,以及出现wrong和success的字符串,所以接下来就是仔细分析一下这段代码
char v4; // al
int result; // eax
int v6; // [esp+0h] [ebp-70h]
int v7; // [esp+0h] [ebp-70h]
char v8; // [esp+12h] [ebp-5Eh]
char v9[20]; // [esp+14h] [ebp-5Ch]
char v10; // [esp+28h] [ebp-48h]
__int16 v11; // [esp+48h] [ebp-28h]
char v12; // [esp+4Ah] [ebp-26h]
char v13; // [esp+4Ch] [ebp-24h]
strcpy(&v13, "437261636b4d654a757374466f7246756e");
while ( 1 )
{
memset(&v10, 0, 0x20u);
v11 = 0;
v12 = 0;
sub_40134B((int)aPleaseInputYou, v6);
scanf(aS, v9);
if ( strlen(v9) > 0x11 )
break;
v3 = 0;
do
{
v4 = v9[v3];
if ( !v4 )
break;
sprintf(&v8, asc_408044, v4);
strcat(&v10, &v8);
++v3;
}
while ( v3 < 17 );
if ( !strcmp(&v10, &v13) )
sub_40134B((int)aSuccess, v7);
else
sub_40134B((int)aWrong, v7);
}
sub_40134B((int)aWrong, v7);
result = stru_408090._cnt-- - 1;
if ( stru_408090._cnt < 0 )
return _filbuf(&stru_408090);
++stru_408090._ptr;
return result;
}
0x03
一、
strcpy(&v13, "437261636b4d654a757374466f7246756e");
这段代码的意思就是赋值,将这段字符串赋值给v13
二、
while ( v3 < 17 );
if ( !strcmp(&v10, &v13) )
sub_40134B((int)aSuccess, v7);
else
sub_40134B((int)aWrong, v7);
}
这段代码的意思就是比较字符串,如果一样就success,否则wrong,所以现在我们已经知道了关键字符串是437261636b4d654a757374466f7246756e,但是显然这不是字符串,所以我们首先得明白,函数对我们输入的东西做了什么
三、
if ( strlen(v9) > 0x11 )
break;
v3 = 0;
do
{
v4 = v9[v3];
if ( !v4 )
break;
sprintf(&v8, asc_408044, v4);
strcat(&v10, &v8);
++v3;
}
这段代码就是讲我们输入的东西转换为十六进制,然后才与v13进行比较,所以现在我们知道了要得到flag就得把v13由十六进制转换为字符串
v4代表我们输入的每一个字符
asc_408044代表%x
四、
转换字符串的,得到flag
最新文章
- ORACLE基本数据类型总结
- linux动态时钟探索
- html文本标准模式,首行空两格,两端对齐,行高
- memory_limit session.cache_expire ecshop初始化注释说明
- .net重启iis线程池和iis站点程序代码【转】
- [C/CPP系列知识] C++中extern “C” name mangling -- Name Mangling and extern “C” in C++
- Liunx常用的特殊环境变量
- linux提权总结(外文)
- JS获取IP、MAC和主机名的五种方法
- Android 动画——Frame Animation与Tween Animation
- 三大修饰符static,final,abstract,接口和抽象类的区别
- ORACLE数据库学习之逻辑结构
- Java基础之 反射是什么?
- 从XML文件和properties文件提取数据
- 原生JS实现轮播效果
- 修改hbuilder背景颜色为护眼模式
- 关于Linux系统下jdk版本切换问题(alternatives命令的使用)
- Core Animation学习总结
- 大话Java中的哈希(hash)结构(一)
- git在idea中的使用,如何构远程git方仓库
热门文章
- D. Distance in Tree(树型Dp计数)
- Appium+Python-项目实践一
- AbstractList源码分析
- 【Hadoop离线基础总结】zookeeper的介绍以及集群环境搭建、网络编程和RPC的简单了解
- jquery注册页面的判断及代码的优化
- [hdu5216]排序
- AndroidStudio3.6升级后的坑-apk打包
- PAT 1007 Maximum Subsequence Sum (25分)
- centOS 开启服务器后无法访问(大坑啊)
- redis python操作api