测试文件:https://adworld.xctf.org.cn/media/task/attachments/6df7b29f8f18437887ff4be163b567d5.exe

1.准备

获取信息

  • 32位文件

2.IDA打开

  1. BOOL __stdcall DialogFunc(HWND hDlg, UINT a2, WPARAM a3, LPARAM a4)
  2. {
  3. HMODULE v5; // eax
  4. HICON v6; // eax
  5. HMODULE v7; // eax
  6. HCURSOR v8; // ST20_4
  7. HWND v9; // eax
  8. CHAR String; // [esp+8h] [ebp-340h]
  9. CHAR v11[]; // [esp+108h] [ebp-240h]
  10. char v12; // [esp+10Ch] [ebp-23Ch]
  11. char v13; // [esp+10Dh] [ebp-23Bh]
  12. char v14; // [esp+10Eh] [ebp-23Ah]
  13. char v15; // [esp+10Fh] [ebp-239h]
  14. char v16; // [esp+110h] [ebp-238h]
  15. char v17; // [esp+111h] [ebp-237h]
  16. char v18; // [esp+112h] [ebp-236h]
  17. char v19; // [esp+113h] [ebp-235h]
  18. char v20; // [esp+114h] [ebp-234h]
  19. char v21; // [esp+115h] [ebp-233h]
  20. char v22; // [esp+116h] [ebp-232h]
  21. char v23; // [esp+117h] [ebp-231h]
  22. CHAR Text; // [esp+208h] [ebp-140h]
  23. char Src[]; // [esp+308h] [ebp-40h]
  24. __int128 v26; // [esp+318h] [ebp-30h]
  25. int v27; // [esp+328h] [ebp-20h]
  26. __int128 v28; // [esp+32Ch] [ebp-1Ch]
  27. int v29; // [esp+33Ch] [ebp-Ch]
  28. __int16 v30; // [esp+340h] [ebp-8h]
  29.  
  30. if ( a2 == )
  31. {
  32. EndDialog(hDlg, );
  33. return ;
  34. }
  35. if ( a2 == )
  36. {
  37. v5 = GetModuleHandleW();
  38. v6 = LoadIconW(v5, (LPCWSTR)'g');
  39. SetClassLongA(hDlg, -, (LONG)v6);
  40. v7 = GetModuleHandleW();
  41. v8 = LoadCursorW(v7, (LPCWSTR)'f');
  42. v9 = GetDlgItem(hDlg, );
  43. SetClassLongA(v9, -, (LONG)v8);
  44. return ;
  45. }
  46. if ( a2 != || (unsigned __int16)a3 != )
  47. return ;
  48. memset(&String, (unsigned __int16)a3 - , 256u);
  49. memset(v11, , 0x100u);
  50. memset(&Text, , 0x100u);
  51. GetDlgItemTextA(hDlg, , &String, );
  52. GetDlgItemTextA(hDlg, , v11, );
  53. if ( strstr(&String, "@") && strstr(&String, ".") && strstr(&String, ".")[] && strstr(&String, "@")[] != '.' )
  54. {
  55. v28 = xmmword_410AA0; // "Registration fai"
  56. v29 = 'erul';
  57. *(_OWORD *)Src = xmmword_410A90; // "Registration Suc"
  58. v30 = '.';
  59. v26 = xmmword_410A80; // "cess!Your flag"
  60. v27 = ':si';
  61. if ( strlen(v11) != // 序列号长度为16
  62. || v11[] != 'C'
  63. || v23 != 'X'
  64. || v11[] != 'Z'
  65. || v11[] + v22 != // v22=65='A'
  66. || v11[] != ''
  67. || v11[] + v21 != // v21=98='b'
  68. || v11[] != 'd' // v11="CZ9d"
  69. || v20 != ''
  70. || v12 != 'm'
  71. || v19 != 'G'
  72. || v13 != 'q'
  73. || v13 + v18 != // v18=57='9'
  74. || v14 != ''
  75. || v17 != 'g'
  76. || v15 != 'c'
  77. || v16 != '' )
  78. {
  79. strcpy_s(&Text, 0x100u, (const char *)&v28);
  80. }
  81. else
  82. {
  83. strcpy_s(&Text, 0x100u, Src);
  84. strcat_s(&Text, 0x100u, v11);
  85. }
  86. }
  87. else
  88. {
  89. strcpy_s(&Text, 0x100u, "Your E-mail address in not valid.");
  90. }
  91. MessageBoxA(hDlg, &Text, "Registeration", 0x40u);
  92. return ;
  93. }

3.代码分析

只要将代码认认真真看一遍,并不难。邮箱的要求在代码第53行

  1. if ( strstr(&String, "@") && strstr(&String, ".") && strstr(&String, ".")[] && strstr(&String, "@")[] != '.' )

要求邮箱有'@'和'.'字符,并且这两个字符并能在一起。

序列号即v11[4]+v12+v13+...v23,可以看上面注释。

4.get flag!

CZ9dmq4c8g9G7bAX

攻防世界--srm-50的更多相关文章

  1. 攻防世界web新手区

    攻防世界web新手区 第一题view_source 第二题get_post 第三题robots 第四题Backup 第五题cookie 第六题disabled_button 第七题simple_js ...

  2. 攻防世界Web新手解析

    攻防世界入门的题目 view source 禁用右键,F12审查元素 get post hackbar进行post robots 直接访问robots.txt,发现f1ag_1s_h3re.ph文件, ...

  3. 记录下做攻防世界的misc题

    0x00 记录一下,代表自己做过 0x01 flag_universe 看简介是来自2018年的百越杯. 将文件下载下来后,就一个flag_universe.pcapng文件,wireshark打开. ...

  4. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  5. 攻防世界 reverse 进阶 10 Reverse Box

    攻防世界中此题信息未给全,题目来源为[TWCTF-2016:Reverse] Reverse Box 网上有很多wp是使用gdb脚本,这里找到一个本地还原关键算法,然后再爆破的 https://www ...

  6. 攻防世界 WriteUp

    附:|>>>攻防世界-WEB-新手练习区<<<| WriteUp目录 01.|>>>baby_web<<<| 02.|>& ...

  7. 【WP】攻防世界-杂项-Misc

    长期更新一波 攻防世界 的杂项题解 这东西主要靠积累吧 攻防世界:https://adworld.xctf.org.cn 因为攻防世界的题目顺序经常变化,我也不改序号了,顺着之前写的位置往下写,推荐使 ...

  8. 攻防世界-MISC:base64stego

    这是攻防世界新手练习区的第十一题,题目如下: 点击下载附件一,发现是一个压缩包,点击解压,发现是需要密码才能解密 先用010editor打开这个压缩包,这里需要知道zip压缩包的组成部分,包括压缩源文 ...

  9. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  10. CTF--web 攻防世界web题 get_post

    攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...

随机推荐

  1. __new__与__init__的区别

    __new__  : 控制对象的实例化过程 , 在__init__方法之前调用 __init__ : 对象实例化对象进行属性设置 class User: def __new__(cls, *args, ...

  2. linux运维、架构之路-Docker快速入门

    一.Docker介绍        Docker是Docker.lnc公司开源的一个基于LXC技术之上构建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0 ...

  3. 五年双十一:SLS数据管道发展之路

    日志服务SLS是一款飞天团队自研产品,服务云上云下3W+客户,并在阿里经济体中作为日志数据的基础设施,在过去几年中经历多次双十一.双十二.新春红包锤炼.在2019双十一中: 服务阿里经济体3W+ 应用 ...

  4. docker 安装MongoDB以及设置用户

    MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序. 1.查看可用的 MongoDB 版本 访问 MongoDB 镜像库地址: https://hub.docker.com/_/ ...

  5. R 动态定义变量名 assign

    rm(list=ls()) library(GSVA) library(GSEABase) library(GSVAdata) library(msigdbr) library(org.Hs.eg.d ...

  6. 解决Firefox已阻止运行早期版本Adobe Flash

      解决Firefox已阻止运行早期版本Adobe Flash     类别    [随笔分类]web   解决Firefox已阻止运行早期版本Adobe Flash   最近火狐浏览器不知抽什么风, ...

  7. 邻近双线性插值图像缩放的Python实现

    最近在查找有关图像缩放之类的算法,因工作中需要用到诸如此类的图像处理算法就在网上了解了一下相关算法,以及其原理,并用Python实现,且亲自验证过,在次与大家分享. 声明:本文代码示例针对的是plan ...

  8. 在阿里云centOS7上部署Redis 5.0.5主从 + 哨兵模式

    一.在两台服务器上分别安装.配置Redis 5.0.5 ,为一主一从 安装Redis关键命令: 将安装包上传至:/home 目录下解 压:.tar.gz 安装依赖:yum install gcc 安装 ...

  9. http://blog.csdn.net/sdksdk0/article/details/50749326

    http://blog.csdn.net/sdksdk0/article/details/50749326

  10. Caffe深度学习计算框架

    Caffe | Deep Learning Framework是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的 Yangqing Jia,目前在Google工作.Caffe是 ...