[2019红帽杯]easyRE

附件

步骤:

  1. ida载入,没有main函数,就先检索了程序里的字符串

    发现了base64加密的特征字符串,双击you found me跟进,找到了调用它的函数,函数很长,我们分开看
  2. 首先我们输入的数据与它下表异或后等于数组a

    数组a里的值,一开始ida分析出来是v17这种的参数,我改了一部分,太多了没有全部修改完,它这边定义了一个长度为36的数组,数值看图

    先写个异或脚本,看一下我们输入的字符串是什么
a = [73,111,100,108,62,81,110,98,40,111,99,121,127,
121,46,105,127,100,96,51,119,125,119,101,107,
57,123,105,121,61,126,121,76,64,69,67] flag="" for i in range(36):
flag+=chr(a[i]^i) print (flag)


看模样都知道不是flag,继续往下看

利用在线解密工具将得到的字符串base64解密10次即可得到我们第二次输入的数据
base64加密10次后的密文

自己python3的base64库出了点问题,就用的在线工具解密

https://bbs.pediy.com/thread-254172.htm
得到了一个网站,进去就是一个看雪的帖子,看网页源码也没找到flag
程序都结束了,还没找到flag,看了其他师傅的wp后才知道,在我们base64加密结束后,下面有调用一个sub_400D35的函数


24行,v5开始的数组和我们已知的一个数组抑或后能得到‘flag’的字样,我们可以反向异或得到v5,之后进行28行的异或操作,得到v2,看看v2是啥

我们以知的数组

v5 = ''
enc1 = 'flag'
v2 = ''
enc = [0x40,0x35,0x20,0x56,0x5D,0x18,0x22,0x45,0x17,0x2F,0x24,0x6E,0x62,0x3C,0x27,0x54,0x48,0x6C,0x24,0x6E,0x72,0x3C,0x32,0x45,0x5B]
for i in range(4):
v5 += chr(enc[i] ^ ord(enc1[i]))
print (v5) for i in range(len(enc)):
v2 += chr(enc[i] ^ ord(v5[i%4]))
print(v2)


flag{Act1ve_Defen5e_Test}

[BUUCTF]REVERSE——[2019红帽杯]easyRE的更多相关文章

  1. 2019 红帽杯 Re WP

    0x01 xx 测试文件:https://www.lanzous.com/i7dyqhc 1.准备 获取信息 64位文件 2.IDA打开 使用Findcrypt脚本可以看到 结合文件名是xx,因此猜测 ...

  2. 2019红帽杯部分wp

    xx 程序首先取输入的前4个字符作为xxtea加密的密钥之后进行xxtea加密.接着进行位置置换操作,然后又进行了以3个为一组的异或 首先逆向解出xxtea加密之后的结果 #include<st ...

  3. buu 红帽杯easyre

    一.拖入ida静态分析 找到关键函数,然后 这步是可以得出前4个字符是flag,不知道为啥我这边的v15的内存地址为空,不然可以异或解出来的,ida日常抽风... 十次的base64加密,我用在线平台 ...

  4. [BUUCTF]REVERSE——[GWCTF 2019]xxor

    [GWCTF 2019]xxor 附件 步骤: 无壳,64位ida载入 程序很简单,首先让我们输入一个字符串,然后进行中间部分的操作,最后需要满足44行的if判断,看一下sub_400770函数 得到 ...

  5. [BUUCTF]REVERSE——[ACTF新生赛2020]easyre

    [ACTF新生赛2020]easyre 附件 步骤 查壳,32位程序,upx壳儿 脱完壳儿,扔进ida 分析 一开始给我们定义了一个数组, v4=[42,70,39,34,78,44,34,40,73 ...

  6. [BUUCTF]REVERSE——[GWCTF 2019]pyre

    [GWCTF 2019]pyre 附件 步骤: 1.附件是pyc文件,用python打不开,百度后得知用python反编译工具打开,分享一个python反编译在线网站 反编译后是这段代码 #!/usr ...

  7. [BUUCTF]REVERSE——easyre

    easyre 附件 拿到附件,首先查壳儿,(不仅仅是查壳,也能看一下程序的大概情况,知道是几位的程序,用对应位数的ida打开)64位程序,没有壳 64位ida直接载入,shift+f12首先检索一下程 ...

  8. 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结

    引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...

  9. 2019 蓝桥杯省赛 A 组模拟赛(一)-修建公路

    题目: 蒜头国有 nn 座城市,编号分别为 0,1,2,3,...,n-1.编号为 x 和 y 的两座城市之间如果要修高速公路,必须花费 x|y 个金币,其中|表示二进制按位或. 吝啬的国王想要花最少 ...

随机推荐

  1. [gym102412D]The Jump from Height of Self-importance to Height of IQ Level

    考虑使用平衡树维护该序列,操作显然可以用fhq treap的分裂+合并来实现 进一步的,问题即变为维护哪些信息来支持push up的操作(并判定是否存在$a_{i}<a_{j}<a_{k} ...

  2. [cf1444D]Rectangular Polyline

    由于两种线段要交替出现,有解的必要条件即为$h=v$(以下均记为$n$) 进一步的,再假设两种线段依次对应于向量$(a_{i},0)$和$(0,b_{i})$,根据题意要求向量长度为给定值且和为0,那 ...

  3. 测试平台系列(83) 前置条件支持Redis语句

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的完整教程,希望大家多多支持. 欢迎关注我的公众号测试开发坑货,获取最新文章教程! 回顾 上节我们打了个野,解决了一 ...

  4. JavaMail发送邮件(超详细)

    一:邮件发送的基本概念 本文我将阐述使用JavaMail方式发送和接收Email的详细说明,本博客本着以后遇到类似的邮件发送需求可以直接把代码粘过去直接使用,快捷方便省时间,对于刚接触的JavaMai ...

  5. [Cnoi2020]线性生物

    期望入门题.但是我不会做. 考虑设\(E_{x\to{x+1}}\)为\(x\)到\(x+1\)点的期望步数. 则\(ans = \sum_{i = 0}^{n} E_{x\to{x+1}}\) 知\ ...

  6. DirectX12 3D 游戏开发与实战第八章内容(下)

    DirectX12 3D 游戏开发与实战第八章内容(下) 8.9.材质的实现 下面是材质结构体的部分代码: // 简单的结构体来表示我们所演示的材料 struct Material { // 材质唯一 ...

  7. 一个简单但能考察C语言基础的题目

    请看题: #include<stdio.h> int a=1; int main(void) { int a=a; printf("a=d%\n",a); return ...

  8. C#gridview颜色提示

    OnRowCreated="gridStatistic_RowCreated private void FillUI() { gridStatistic.DataSource = dtSta ...

  9. LeetCode数组中重复的数字

    LeetCode 数组中重复的数字 题目描述 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. ...

  10. jenkins之邮箱设置