题目地址:https://buuoj.cn/challenges#reverse3

IDA打开

下载文件,无壳,直接使用ida(32)打开,找到主函数:

打开main 0 函数:

__int64 main_0()
{size_t v0; // eaxconst char *v1; // eaxsize_t v2; // eaxint v3; // edx__int64 v4; // ST08_8signed int j; // [esp+DCh] [ebp-ACh]signed int i; // [esp+E8h] [ebp-A0h]signed int v8; // [esp+E8h] [ebp-A0h]char Dest[108]; // [esp+F4h] [ebp-94h]char Str; // [esp+160h] [ebp-28h]char v11; // [esp+17Ch] [ebp-Ch]for ( i = 0; i < 100; ++i ){if ( (unsigned int)i >= 0x64 )j____report_rangecheckfailure();Dest[i] = 0;}sub_41132F("please enter the flag:");sub_411375("%20s", &Str);v0 = j_strlen(&Str);v1 = (const char *)sub_4110BE(&Str, v0, &v11);strncpy(Dest, v1, 0x28u);v8 = j_strlen(Dest);for ( j = 0; j < v8; ++j )Dest[j] += j;v2 = j_strlen(Dest);if ( !strncmp(Dest, Str2, v2) )sub_41132F("rigth flag!\n");elsesub_41132F("wrong flag!\n");HIDWORD(v4) = v3;LODWORD(v4) = 0;return v4;
}

代码分析:

第24行代码,第27~28行代码在对Dest进行一些列变换
从第30行代码分析得到,Str2中存储的就是flag变换过后的字符串,打开Str2

.data:0041A034 ; char Str2[]
.data:0041A034 Str2            db 'e3nifIH9b_C@n@dH',0 ; DATA XREF: _main_0+142↑o

因此,我们只需要将Str2反向变换即可得到flag


从’ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='可以看出,这个函数应该是base64的加密函数,因此只需要解密即可。

那应该是base64加密了,直接编写解题脚本:


import base64
s = "e3nifIH9b_C@n@dH"
x=''
for i in range(0,len(s)):x+=chr(ord(s[i])-i)# chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符#ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,***返回对应的 ASCII 数值***,或者 Unicode 数值# >>>ord('a')# 97print(base64.b64decode(x))

或者:

import base64str1 = 'e3nifIH9b_C@n@dH'
x = ''
flag = ''for j in range(0, len(str1)):x += chr(ord(str1[j]) - j)flag = base64.b64decode(x)
flag = flag.decode('ASCII')
print(flag)


flag{i_l0ve_you}

BUUCTF-Reverse:reverse3相关推荐

  1. BUUCTF Reverse/findKey

    BUUCTF Reverse/findKey 先看文件信息:32位程序,没有加壳 打开看看,标题为find flag,也没啥有用的信息 IDA32位打开,找到start函数,看到有个main,跟随跳转 ...

  2. BUUCTF Reverse helloword、findit

    BUUCTF Reverse helloword.findit helloword findit 一天一道CTF题目,能多不能少 记录一下这两道题,这两道题是安卓逆向的题目~ 第一次接触安卓逆向的题目 ...

  3. BUUCTF Reverse xor

    题目:BUUCTF Reverse xor 一些犯傻后学到了新东西的记录 查壳,没壳,IDA打开 main函数很好理解,输入一个长度为33的字符串,1-32位与前一位异或后与global相等,则判定f ...

  4. BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker

    BUUCTF Reverse/[网鼎杯 2020 青龙组]jocker 先看下文件信息,没有加壳,32位程序 运行一下,又是一道字符串比较的题目 用IDA32位打开,分析一下 // positive ...

  5. BUUCTF Reverse(helloworld)

    BUUCTF Reverse(helloworld) 题目附件下载下来之后,是.apk后缀,所以可能是安卓逆向. 这里我用的工具是Android Killer,下载地址:https://xiazai. ...

  6. BUUCTF Reverse/Ultimate Minesweeper

    BUUCTF Reverse/Ultimate Minesweeper 先看文件信息,没有加壳,且为net编写的程序 运行是一个扫雷游戏,只要点错一个就会自动退出(左上角显示的是雷的数目,一共有897 ...

  7. BUUCTF Reverse/[GWCTF 2019]pyre

    BUUCTF Reverse/[GWCTF 2019]pyre 下载得到一个pyc文件,用这个在线反编译pyc,pyo反汇编出代码 print 'Welcome to Re World!' print ...

  8. BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun

    BUUCTF Reverse/[WUSTCTF2020]Cr0ssfun 先看文件信息, IDA64位打开,很简单的题目,只要一个个输入就行 都是返回的这种元素 _BOOL8 __fastcall i ...

  9. BUUCTF reverse题解汇总

    本文是BUUCTF平台reverse题解的汇总 题解均来自本人博客 目录 Page1 Page2 Page3 Page4 Page1 easyre reverse1 reverse2 内涵的软件 新年 ...

最新文章

  1. linux升级内核后反复重启,Ubuntu 14.04 升级内核后重启开机黑屏解决
  2. spark Bisecting k-means(二分K均值算法)
  3. Struts2 POI 导入导出Excel数据
  4. node.js当中net模块的简单应用(基于控制台的点对点通信)
  5. linux shell cut -d ‘:‘ -f1,3
  6. python清空屏幕代码_python代码怎样清屏
  7. Nginx常见面试题整理---40题
  8. android cos函数,Android三角函数
  9. mkallcache1.php,distributedCache
  10. 如何给图片加水印?分享怎么给图片加水印的方法
  11. 225页10万字政务大数据能力平台项目建议书
  12. atof函数(把字符串转换成浮点数)
  13. ERROR: resetting DM9000 -> not responding dm9000 not found at 0x88000000问题解决
  14. 城市公共交通规划掌握内容
  15. 河南单招计算机专业专科学校排名2015,河南省单招大专学校排名榜 哪个学校好...
  16. canopen 报文格式_CANopen协议介绍
  17. 【论文翻译】 BMN: Boundary-Matching Network for Temporal Action Proposal Generation
  18. CUMT学习日记——信号与系统之考试复习的记录
  19. Linux下运行robot,Robot Framework-Unix和Linux安装
  20. 面试被问死怎么办?学会这四招,通过的机率提升30%

热门文章

  1. Golang的for range遍历
  2. 感悟:微博深度学习平台架构和实践
  3. 取某个日期所在周的任意一天日期
  4. 如何在属性面板中增加一个属性-UI界面编辑器(XproerUI)教程
  5. JavaScript:document.execCommand()的用法
  6. 史上最经典的数据库面试题之二
  7. Python学习笔记:Day 3编写ORM
  8. Git学习笔记:Git简介
  9. Python:条件判断
  10. 计算机重复启动问题原因及修复