很想挑战难题,发现自己连writeup也看不懂

用64bit的ida打开,查找字符

找到函数:

signed __int64 sub_4009C6()
{signed __int64 result; // rax__int64 v1; // ST10_8__int64 v2; // ST18_8__int64 v3; // ST20_8__int64 v4; // ST28_8__int64 v5; // ST30_8__int64 v6; // ST38_8__int64 v7; // ST40_8__int64 v8; // ST48_8__int64 v9; // ST50_8__int64 v10; // ST58_8int i; // [rsp+Ch] [rbp-114h]char v12; // [rsp+60h] [rbp-C0h]char v13; // [rsp+61h] [rbp-BFh]char v14; // [rsp+62h] [rbp-BEh]char v15; // [rsp+63h] [rbp-BDh]char v16; // [rsp+64h] [rbp-BCh]char v17; // [rsp+65h] [rbp-BBh]char v18; // [rsp+66h] [rbp-BAh]char v19; // [rsp+67h] [rbp-B9h]char v20; // [rsp+68h] [rbp-B8h]char v21; // [rsp+69h] [rbp-B7h]char v22; // [rsp+6Ah] [rbp-B6h]char v23; // [rsp+6Bh] [rbp-B5h]char v24; // [rsp+6Ch] [rbp-B4h]char v25; // [rsp+6Dh] [rbp-B3h]char v26; // [rsp+6Eh] [rbp-B2h]char v27; // [rsp+6Fh] [rbp-B1h]char v28; // [rsp+70h] [rbp-B0h]char v29; // [rsp+71h] [rbp-AFh]char v30; // [rsp+72h] [rbp-AEh]char v31; // [rsp+73h] [rbp-ADh]char v32; // [rsp+74h] [rbp-ACh]char v33; // [rsp+75h] [rbp-ABh]char v34; // [rsp+76h] [rbp-AAh]char v35; // [rsp+77h] [rbp-A9h]char v36; // [rsp+78h] [rbp-A8h]char v37; // [rsp+79h] [rbp-A7h]char v38; // [rsp+7Ah] [rbp-A6h]char v39; // [rsp+7Bh] [rbp-A5h]char v40; // [rsp+7Ch] [rbp-A4h]char v41; // [rsp+7Dh] [rbp-A3h]char v42; // [rsp+7Eh] [rbp-A2h]char v43; // [rsp+7Fh] [rbp-A1h]char v44; // [rsp+80h] [rbp-A0h]char v45; // [rsp+81h] [rbp-9Fh]char v46; // [rsp+82h] [rbp-9Eh]char v47; // [rsp+83h] [rbp-9Dh]char v48[32]; // [rsp+90h] [rbp-90h]int v49; // [rsp+B0h] [rbp-70h]char v50; // [rsp+B4h] [rbp-6Ch]char v51; // [rsp+C0h] [rbp-60h]char v52; // [rsp+E7h] [rbp-39h]char v53; // [rsp+100h] [rbp-20h]unsigned __int64 v54; // [rsp+108h] [rbp-18h]v54 = __readfsqword(0x28u);v12 = 73;v13 = 111;v14 = 100;v15 = 108;v16 = 62;v17 = 81;v18 = 110;v19 = 98;v20 = 40;v21 = 111;v22 = 99;v23 = 121;v24 = 127;v25 = 121;v26 = 46;v27 = 105;v28 = 127;v29 = 100;v30 = 96;v31 = 51;v32 = 119;v33 = 125;v34 = 119;v35 = 101;v36 = 107;v37 = 57;v38 = 123;v39 = 105;v40 = 121;v41 = 61;v42 = 126;v43 = 121;v44 = 76;v45 = 64;v46 = 69;v47 = 67;memset(v48, 0, sizeof(v48));v49 = 0;v50 = 0;sub_4406E0(0LL, v48, 37LL);v50 = 0;if ( sub_424BA0(v48) == 36 ){for ( i = 0; i < (unsigned __int64)sub_424BA0(v48); ++i ){if ( (unsigned __int8)(v48[i] ^ i) != *(&v12 + i) ){result = 4294967294LL;goto LABEL_13;}}sub_410CC0("continue!");memset(&v51, 0, 0x40uLL);v53 = 0;sub_4406E0(0LL, &v51, 64LL);v52 = 0;if ( sub_424BA0(&v51) == 39 ){v1 = sub_400E44(&v51);v2 = sub_400E44(v1);v3 = sub_400E44(v2);v4 = sub_400E44(v3);v5 = sub_400E44(v4);v6 = sub_400E44(v5);v7 = sub_400E44(v6);v8 = sub_400E44(v7);v9 = sub_400E44(v8);v10 = sub_400E44(v9);if ( !(unsigned int)sub_400360(v10, off_6CC090) ){sub_410CC0("You found me!!!");sub_410CC0("bye bye~");}result = 0LL;}else{result = 4294967293LL;}}else{result = 0xFFFFFFFFLL;}
LABEL_13:if ( __readfsqword(0x28u) != v54 )sub_444020();return result;
}

发现有两个加密的函数,一个是简单的异或,一个是base64的十次加密,密文如下

利用工具翻译出看雪的网站,不是flag

解密第一个函数(对数组进行i++的异或)得到提示Info:The first four chars are `flag`

在函数上下寻找,找到了sub_400D35函数,使用"R"键,发现存在有flag的疑似字符

结合之前的提示,我们要找到4个与数组异或得到flag,脚本如下:

#include<stdio.h>
int main()
{int a[4]={102,108,97,103};int b[4];int i[25]={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};int k;for(k=0;k<4;k++){b[k]=a[k]^i[k];}for(k=0;k<25;k++){i[k]=i[k]^b[k%4];printf("%d ",i[k]);}
} 

[2019红帽杯]easyRE writeup相关推荐

  1. [2019红帽杯]easyRE1题解

    迷蒙马背眠,月随残梦天边远,淡淡起茶烟.                                                         --松尾芭蕉 目录 1.查壳 2.拖入64位I ...

  2. buu [2019红帽杯]xx1 wp

    首先用exeinfo打开它,发现是无壳的64位程序. 逆向先静后动,因此先用ida 打开: main函数代码如下: int __cdecl main(int argc, const char **ar ...

  3. buu-[2019红帽杯]easyRE

    查壳 64位ida 直接查看字符串能看到you found me和一些奇怪字符串 有些类似base的东西 先找you found me 跟进后CTRL+X交叉引用找到函数,f5查看伪代码 signed ...

  4. buu [2019红帽杯]childRE wr

    这个题是有一定难度的,它考的知识点不是特别常见,对于萌新来说. 解题步骤: 1. 下载完附件之后先进行查壳 无壳,我们直接拖进ida64中.通过shift+f12查看字符串 找到输出flag的字符串通 ...

  5. BUUCTF-[2019红帽杯]SnakeDig the way

    [2019红帽杯]Snake 题目下载:下载 下载完文件是一个用C#编写的untiy程序,对于这种程序果断用dnSpy查看Assembly-CSharp.dll 找到如下位置 发现这些函数都导入了In ...

  6. awd赛题的flag是什么意思_红帽杯线下赛AWD题目分析

    上周打了一场红帽杯的线下赛,可惜开具发挥失误服务器down了几轮一度垫底-最后才又勉强上了点儿分-..赛后对题目中的几处比较有意义的漏洞做了一下分析,写出了下面篇文章. web1 web1是一个wor ...

  7. 2019领航杯write up

    2019领航杯write up 最近参加了领航杯,随便写点队伍做出来的题的write up 贴一下我队友的write up 他写的应该比我的详细 https://blog.csdn.net/qq_39 ...

  8. 2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会

    2019 蓝桥杯省赛 B 组模拟赛(一)蒜厂年会 这题有两种情况 1.最大的和是在0~n-1 2.最大的和越过了首尾 这时候只要用n个数的和 - 0~n-1 的连续的最小和 这是求连续子集最大.最小 ...

  9. 面向萌新的红帽杯2018线上赛wp

    网络安全攻防大赛第二届"红帽杯"网络安全攻防大赛(除了web3 guess id,不会做.没写.) misc2 Not Only Wireshark 下载流量包,wireshark ...

最新文章

  1. 把一个dataset的表放在另一个dataset里面_视频自监督一. STCR: 一个基于数据增强的简单有效正则项 (降低静态信息的影响)...
  2. 【Android】Android 8种对话框(Dialog)
  3. VTK:相互作用之MouseEventsObserver
  4. 转:PHP非阻塞模式
  5. 调用打开另外一个APK
  6. Microsoft.CSharp.targets不存在解决方法
  7. gitlab简单使用教程【转】
  8. 分窗 Gram-Schmidt 高光谱降维的 水稻纹枯病检测
  9. Git 简介和命令行操作
  10. Cognos8.3解决方案
  11. Fix Bug的五个阶段
  12. php如何生成一年的日历表_PHP生成的日历
  13. 一款非常萌的桌面工具---bongo cat mver0.1.6 附使用教程
  14. 万字详述推荐系统经典模型DCN,DCN_v2,PNN
  15. 肠道菌群失调与炎症性肠病的关联
  16. Android DVM简介
  17. JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx
  18. 聚焦应用场景,OriginOS全面焕新用户体验
  19. 游戏约玩app源码开发,重复请求如何处理?
  20. 树莓派 teamviewer 使用代理服务器上网

热门文章

  1. 大数据赋能交通业务管理——远眺智慧交通集成管控系统
  2. altium 原理图更新UNIQUE ID一样怎么办
  3. Ninite一次安装所有您喜欢的Windows程序
  4. 【新概念二】27-A wet night
  5. oracle 分区,range-list,范围-列表复合分区
  6. Linux和PHP 开发参考消息 php博文+Linux镜像+http服务器+存储技术+框架+视频+好书+通信...
  7. springboot整合poi-tl
  8. SecureCRT打开时,出现 告警的解决方法
  9. MS 08-067失败过程记录
  10. html用户名和密码不能为空,【JS】判断用户名和密码是否为空