攻防世界--Hello, CTF
2024-10-06 00:14:06
测试文件地址:https://www.lanzous.com/i5ot1yd
使用IDA1打开
打开之后,这个字符串和第一题的有些类似,拿去转换一下,Flag就得到了
CrackMeJustForFun
也可以对伪代码进行分析
int __cdecl main(int argc, const char **argv, const char **envp)
{
signed int v3; // ebx
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[]; // [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 ( )
{
memset(&v10, , 0x20u);
v11 = ;
v12 = ;
sub_40134B(aPleaseInputYou, v6);
scanf(aS, v9);
if ( strlen(v9) > 0x11 )
break;
v3 = ;
do
{
v4 = v9[v3];
if ( !v4 )
break;
sprintf(&v8, asc_408044, v4);
strcat(&v10, &v8);
++v3;
}
while ( v3 < );
if ( !strcmp(&v10, &v13) )
sub_40134B(aSuccess, v7);
else
sub_40134B(aWrong, v7);
}
sub_40134B(aWrong, v7);
result = stru_408090._cnt-- - ;
if ( stru_408090._cnt < )
return _filbuf(&stru_408090);
++stru_408090._ptr;
return result;
}
第36~39行代码是判断输入字符串和right serial是否匹配,通过第15行代码,我们知道v13就是right serial,将初始化v13的十六进制转换为字符串即可。
最新文章
- wParam和lParam两个参数到底是什么意思?
- js里cookie操作
- Sum All Odd Fibonacci Numbers
- SqlSever基础 union 与 union all的区别,即 重复项是否全部显示
- Git与Repo入门(转载)
- 2014 Multi-University Training Contest 4
- Android之Handler
- Hadoop集群(第2期)_机器信息分布表
- 高效的SQLSERVER分页查询(推荐)
- Android平台调用Web Service:演示样例
- Win10上编译CoreCLR的Windows和Linux版本
- 继承 in her it
- DOM获取元素的方法
- JavaScript:void(0)使用介绍
- Python 学习 第一篇:数据类型(数字,集合,布尔类型,操作符)
- [转帖]以Windows服务方式运行.NET Core程序
- numpy笔记
- 双足步行机器人的ZMP与CoP检测
- svn和git的优缺点
- SAM