ISCC之Re2
硬核rust逆向
首先去学了一天rust。。。我TMD
IDA打开,跟踪主函数
看一下伪代码,发现有一串密文
跟进去发现一串数据,猜测有可能是flag的加密数据,于是回头去分析算法
发现一个关键点
if ( v16 == v24 )
break;
v2 = ((*(_DWORD *)(v33 + 4 * v25) >> 2) ^ 0xA) == *(_DWORD *)(v16 + 4 * v25);
++v25;
v26 += v2;
v24 -= 4LL;
这段被加密过的字符串解密方式为(data[i] >> 2) ^ 0xA,data是uint32_t类型的数组,解密之后的字符串即为flag,然后会拿来和自己输入的字符串作比较。
于是我们可以根据上面的密文构造payload
#!-*-coding:utf-8 -*-
flag=[0x154,0x180,0x1FC,0x1E4,
0x1F8,0x154,0x190,0x1BC,
0x1BC,0x1B8,0x154,0x1F8,
0x194,0x154,0x1B4,0x1BC,
0x1F8,0x154,0x1F4,0x188,
0x1AC,0x1F8,0x154,0x18C,
0x1E4,0x154,0x190,0x1BC,
0x1BC,0x1B8,0x1BC,0x1B8,0x22,0x000,0x220]
decript=''
for i in flag:
decript += chr(( i >> 2) ^0xA)
print (decript)
最后getflag,但是算出来的flag有乱码,于是一路穷举,最后两位猜出来是下划线和点号
Flag: _just_need_to_get_what_is_needed_.
最新文章
- js文章列表的树形结构输出
- LInux下修改 ~/.bashrc 文件source ~/.bashrc 后 shell 命令 失效 任何命令都显示 “ bash XX :未找到命令”
- 【转】准确理解CSS clear:left/right的含义及实际用途
- android 的通知管理
- centos彻底删除mysql
- JMeter性能测试介绍学习一
- CSS处理溢出
- CSS基础知识—【结构、层叠、视觉格式化】
- 分享我的2014年3月unity3d面试题与参考答案
- caffe简易上手指南(一)—— 运行cifar例子
- Redis学习手册
- Python-方法重载的问题
- HUST 1586 数字排列
- 号称精通Java的你,是否真的名副其实
- C++负数取模
- tensorflow-线性函数训练例子一
- 原生JS实现三级联动
- python基础一 ------利用生成器生成一个可迭代对象
- 常见模块(三) pickle模块和json模块
- 处理全站请求编码,无论是GET还是POST,默认是UTF-8
热门文章
- TensorFlow-线程回归模型
- 调用k8s api遇到CERTIFICATE_VERIFY_FAILED的问题解决方法
- 集群服务器+定时任务(Quartz) 重复执行的问题
- 树莓派插入U盘自动拷贝系统日志到U盘或通过U盘升级程序
- Java程序运行机制
- mysql left join和union结合的用法
- 解决Python模块报错:ModuleNotFoundError: No module name 'StringIO'
- react-native-typescript-项目环境搭建
- Python学习日记(一) String函数使用
- Prism