参考链接

https://ctftime.org/task/7455

题目描述

A babyrust to become a hardcore reverser

点我下载

解题过程

一道用rust写的逆向题,先拖到IDA PRO里,期间会报错,不用理会即可,可以看到里面有两个main函数,选比较长的那个main函数_ZN15beginer_reverse4main17h80fa15281f646bc1E,这个main函数看起来逻辑很复杂,但真正有用的部分只有这里

do
{
if ( v15 == v22 )
break;
v25 = ((*((_DWORD *)v30 + v23) >> 2) ^ 0xA) == *(_DWORD *)&v15[4 * v23];
// if we set a breakpoint here, v15 is the input but is unsigned extended to DWORD array
++v23;
v24 += v25;
v22 -= 4;
}

这段被加密过的字符串解密方式为(data[i] >> 2) ^ 0xA,datauint32_t类型的数组,解密之后的字符串即为flag,然后会拿来和自己输入的字符串作比较。

Python>flag = ""
Python>for p in range(0x51000, 0x51080, 4) + range(0x6722, 0x672a, 4):
Python> flag += chr((Dword(p) >> 2) ^0xA)
Python>
Python>flag
INS{y0ur_a_r3a1_h4rdc0r3_r3v3rs3r}

最新文章

  1. css样式之border
  2. SOAPUI使用教程-MockService脚本概述
  3. 数据库.bak文件还原报错的处理办法
  4. Replication的犄角旮旯(五)--关于复制identity列
  5. devexpress GridControl 行指示列图标绘制
  6. SUID或SGID程序中能不能用system函数
  7. HDU1506_Largest Rectangle in a Histogram
  8. MySQL函数笔记
  9. WSAEventSelect IO复用模型
  10. JSP EL表达式使用
  11. echarts雷达图点击事件
  12. swift 之函数式编程(一)
  13. 使用VIM将文件的其中的连续几行注释删除或者给其中的连续几行添加注释
  14. List的分组,求和,过滤操作
  15. Oarcle之视图
  16. 解决Jira和Confluence访问打开越来越缓慢问题
  17. FFmpeg在JAVA中的使用-音频提取&字幕压缩
  18. c++11实现c++14的optional
  19. BZOJ4475: [Jsoi2015]子集选取【找规律】【数学】
  20. 洛咕 P3964 [TJOI2013]松鼠聚会

热门文章

  1. csdn专家主页
  2. npm 错误记录
  3. 提示标签title折行
  4. ICML 2019 分析
  5. 1、Shiro简介以及整体架构
  6. selenium报错汇总
  7. ABAP基本数据类型
  8. 一文学会Rust?
  9. 记一次Python pip安装失败的总结
  10. centOs 常用操作