2024-XYCTF-re

感谢大佬们给了这么多学习的机会,嘻

前面一部分是自己做的,后面一部分是复现,这么多题,狠狠鞭策自己~

聪明的信使

  • 拖进IDA

  • 凯撒,偏移量9

  • 原题

    • oujp{H0d_TwXf_Lahyc0_14_e3ah_Rvy0ac@wc!}
  • 解密后

    • flag{Y0u_KnOw_Crypt0_14_v3ry_Imp0rt@nt!}

喵喵喵的flag碎了一地

  • 尝试打开,一闪而过
  • 查壳>>>没壳
  • 拖进IDA
    • 能看到提示

miaomiaomiao

  • shift+F12 转string
    • flag{My_fl@g_h4s_
    • 这是flag的前半段
  • 查看函数,发现 br0ken_4parT_
    • 这是flag的第二段
    • 里面有提示 “Learn about Xref and Find out which function refers me to get the last part of the flag!”
    • 直接 x 找找看
  • 在汇编界面查看并拼起来
    • Bu7_Y0u_c@n_f1x_1t!}
    • 这是flag的后半段
  • flag{My_fl@g_h4s_br0ken_4parT_Bu7_Y0u_c@n_f1x_1t!}

砸核桃

  • 先用 DIE 进行查看
    • NsPacK(3.x)

zahetao_pe

  • 手动脱壳

  • 首先找OEP(原始入口点)

    • od 载入后入口点处为:pushfd,pushad,call XXXX
    • OEP 的特征如下:popad,popfd,jmp OEP
  • ctrl+f 查找 popfd

    • 找到 OEP

zahetao_od

  • 小插件脱壳
    • 选择当前的 EIP 作为入口点地址

zahetao_od_tuoke

  • 把文件另存(不关闭 od)
    • 此时的新文件还无法运行
      • 未修复 IAT
  • 使用 ImportREC

zahetao_ImportREC

  • 处理之后没有问题就修复 dump 出来的文件

zahetao_repair

  • 这样就脱好壳了

zahetao_tuoke

  • 脱完壳用IDA看一看,发现有个加密

zahetao_ida

  • 写个脚本破解一下
    • 得到flag
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main()
{
char str1[17]="this_is_not_flag";
int num[]={18,4,8,20,36,92,74,61,86,10,16,103,0,65,0,1,70,90,68,66,110,12,68,114,12,13,64,62,75,95,2,1,76,94,91,23,110,12,22,104,91,18,2,72,14};
int len=sizeof(num)/sizeof(num[0]);
for(int i=0;i<len;i++)
cout<<(char)(str1[i % 16] ^ num[i]);
cout<<endl;
return 0;
}
1
flag{59b8ed8f-af22-11e7-bb4a-3cf862d1ee75}


2024-XYCTF-re
http://example.com/2024/04/27/2024-XYCTF-re/
作者
Tsglz
发布于
2024年4月27日
许可协议