攻防世界 reverse reverse-for-the-holy-grail-350
reverse-for-the-holy-grail-350 tu-ctf-2016
程序流程很简单,就一个检验函数:
1 __int64 __fastcall stringMod(__int64 *a1) 2 { 3 __int64 length; // r9 4 char *c_str; // r10 5 __int64 i; // rcx 6 signed int v4; // er8 7 int *temp_2; // rdi 8 int *temp_3; // rsi 9 signed int t; // ecx 10 signed int j; // er9 11 int index; // er10 12 unsigned int tmp; // eax 13 int sign; // esi 14 int v12; // esi 15 int temp[24]; // [rsp+0h] [rbp-60h] 16 17 memset(temp, 0, 0x48uLL); 18 length = a1[1]; 19 if ( length ) 20 { 21 c_str = (char *)*a1; 22 i = 0LL; 23 v4 = 0; 24 do 25 { 26 v12 = c_str[i]; 27 temp[i] = v12; 28 if ( 3 * ((unsigned int)i / 3) == (_DWORD)i && v12 != firstchar[(unsigned int)i / 3] )// 当i是3的倍数时,str=first[i/3] 29 // { 65, 105, 110, 69, 111, 97} 30 v4 = -1; 31 ++i; 32 } 33 while ( i != length ); 34 } 35 else 36 { 37 v4 = 0; 38 } 39 temp_2 = temp; 40 temp_3 = temp; 41 t = 666; 42 do 43 { 44 *temp_3 = t ^ *(unsigned __int8 *)temp_3; 45 t += t % 5; 46 ++temp_3; 47 } 48 while ( &temp[18] != temp_3 ); // 异或操作 49 j = 1; 50 index = 0; 51 tmp = 1; 52 sign = 0; 53 do // 0,1,2 每三个数验证 54 { 55 if ( sign == 2 ) 56 { 57 if ( *temp_2 != thirdchar[index] ) // { 751, 708, 732, 711, 734, 764, 0, 0 } 58 // temp[2]= 59 v4 = -1; 60 if ( tmp % *temp_2 != masterArray[index] )// { 471, 12, 580, 606, 147, 108 } 61 // 62 // temp[0]*temp[1]%temp[2]= 63 v4 = -1; 64 ++index; 65 tmp = 1; 66 sign = 0; 67 } 68 else // sign 0,1, 69 { 70 tmp *= *temp_2; // 0 tmp=temp[0] 71 // 1 tmp=temp[0]*temp[1] 72 if ( ++sign == 3 ) 73 sign = 0; 74 } 75 ++j; 76 ++temp_2; 77 } 78 while ( j != 19 ); // 18循环 79 return (unsigned int)(t * v4); 80 }
wp:
1 firstchar=[65, 105, 110, 69, 111, 97] 2 thirdchar=[751, 708, 732, 711, 734, 764] 3 masterArray=[471, 12, 580, 606, 147, 108 ] 4 t=[] 5 x=666 6 for i in range(18): 7 t.append(x) 8 x+=x%5 9 flag=[0 for i in range(18)] 10 index=0 11 for i in range(0,18,3): 12 flag[i]=firstchar[index] #0,3,6 13 index+=1 14 index=0 15 for i in range(2,18,3): 16 flag[i]=thirdchar[index]^t[i] #2 5,8 17 index+=1 18 index=0 19 for i in range(1,18,3): 20 for f in range(32,126): #常用可输入字符 21 if (flag[i-1]^t[i-1])*(f^t[i])%(flag[i+1]^t[i+1])==masterArray[index]: 22 flag[i]=f 23 index+=1 24 break; 25 26 print('tuctf{'+''.join(map(chr,flag))+'}')
tuctf{AfricanOrEuropean?}
转载于:https://www.cnblogs.com/DirWang/p/11575270.html
攻防世界 reverse reverse-for-the-holy-grail-350相关推荐
- 【攻防世界】REVERSE新手练习区 - Hollo,CTF
Hollo,CTF - wp 点开附件发现是exe文件,需要输入正确的flag,才能得到 success!,否则得到 wrong!. 将附件拖入ida中: F5(Fn+F5)查看伪代码: 分析36-4 ...
- 攻防世界Reverse进阶区-EasyRE-writeup
1. 介绍 本题是xctf攻防世界中Reverse的进阶区的题EasyRE. 下载下来以后是一个exe文件:210f1e18ac8d4a15904721a2383874f5.exe 2. 分析 首先看 ...
- 攻防世界Reverse进阶区-answer_to_everything-writeup
本题是xctf攻防世界中Reverse的进阶区的题answer_to_everything 题目来源: 2019_ISCC 题目描述:sha1 得到了一个神秘的二进制文件.寻找文件中的flag,解锁宇 ...
- 攻防世界逆向初级训练
攻防世界逆向新手训练区wp 文章目录 re1 做题实录 分析总结 game 做题实录 分析总结 Hello,CTF 做题实录 分析总结 open-source 做题实录 分析总结 simple-unp ...
- 攻防世界 Reverse高手进阶区 2分题 reverse-for-the-holy-grail-350
前言 继续ctf的旅程 攻防世界Reverse高手进阶区的2分题 本篇是reverse-for-the-holy-grail-350的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数 ...
- 攻防世界reverse进阶easyre-153 writeup(#gdb调试父子进程、#ida版本差异)
文章目录 学习目标: 引言 第一步.查脱壳 1.查壳 2.脱壳 3.查看文件格式 第二步.IDA静态分析 1.IDA版本的小坑 2.分析main函数 3.分析lol函数 第三步.gdb动态分析 1.m ...
- Revers篇:攻防世界reverse进阶re2-cpp-is-awesome
攻防世界reverse进阶re2-cpp-is-awesome IDA分析 很简单的一个程序 程序流程分析 首先检查参数,参数少于2就退出,并提示:Usage: ./re2-cpp-is-awesom ...
- 攻防世界 Reverse高手进阶区 3分题 crackme
前言 继续ctf的旅程 攻防世界Reverse高手进阶区的3分题 本篇是crackme的writeup 攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 查壳,显示nsPack壳 找了个 ...
- 攻防世界 REVERSE 新手区/game
攻防世界 REVERSE 新手区/game 下载得到附件 看题目说一共有8个围成一圈的灯,需要输入1-8个数,输入的数会让相应的数字的灯改变状态(亮或灭),且该灯的前一个灯和后一个灯也会改变状态.输入 ...
- 攻防世界 REVERSE 新手区/maze
攻防世界 REVERSE 新手区/maze 老规矩先查壳,没加壳而且是64位的 用IDA64位打开,找到main函数F5查看伪代码 这是一个迷宫题,必然是有迷宫图在里面,然后走的路径就是输出的flag ...
最新文章
- 文件读取输出-python
- php趣味小程序,php常用小程序
- CloudStack 制作window模板
- c++ eos智能合约开发_干货|EOS智能合约开发(一)EOS环境搭建和启动节点
- 0322 第一天 心得体会
- [转载]对复旦食堂的印象
- 收藏 | EXCEL的36个逆天功能,动画教程
- 通过Java和Spring Boot应用程序将Gmail用作SMTP服务器
- linux如何设置mac快捷键,在Ubuntu上使用macOS的快捷键
- mysql 查看root_Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
- 《Python编程从入门到实践》记录之json模块(数据存储)
- shell中source的作用
- python数据分析df_Python数据分析pandas入门!(附数据分析资料)
- 【信息学奥赛一本通 提高组】第一章 贪心算法
- c++线程间通信的几种方法_JAVA并发之线程amp;进程
- Internet Download Manager 6.37.14 Final
- [AndroidO] [RK3399] -- CH341驱动移植
- starbound服务器未响应,星界边境starbound
- android判断字符中是否包含表情符
- SurfaceView打造自定义时钟ClockView
热门文章
- 《炬丰科技-半导体工艺》集成微加工平台各向异性腐蚀
- sortby降序java_lodash多列sortBy降序
- MySQL中更新时间字段的更新时点问题
- JavaEE进阶知识学习-----Java8新特性知识学习-4-1-StreamAPI
- Swift 优化OC接口 NS_REFINED_FOR_SWIFT
- 远程oracle 不通,Oracle开放1521端口 telnet不通解决办法
- linux读取excel文件内容,如何读取EXCEL文件到内表
- android exoplayer最好用的视频播放器,倍速播放
- 学与思的关系?(中国文化史)
- Deel:20个月,ARR 1M to 100M。