吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4947|回复: 19
收起左侧

[CTF] 安洵杯RE(PE_Debug)

  [复制链接]
lihaohua 发表于 2018-11-28 23:43
本帖最后由 lihaohua 于 2018-11-28 23:46 编辑

拿到题目名字已给出提示PE结构OD打开查看一下字符串
1.png
啥也莫得PEinfo 查看一下区块发现端倪

2.png

参照了一下逆向工程核心原理


   3.png
4.png

PEditor修改一下大小E00
5.png

OD里跑一下修改了PE区块rdata大小之后 可以看到一下数据
    6.png
这里看到base64table 猜测后面会用到base64的加密动态调试了一下发现这里的一个bug
   7.png
感到很奇怪 ,调试了发现执行了int 0x2D 程序直接结束了 ,修改一下保存

8.png
发现程序能够正常运行了,继续调试会发现无论如何都不能执行到正确的输出,(也有可能是我太菜了)。
IDA启动!
看一下关键代码
[Asm] 纯文本查看 复制代码
int sub_401080()
{

  char v0; // ST2B_1@2

  int result; // eax@5

  signed int v2; // ecx@7

  __int16 *v3; // [sp+18h] [bp-BCh]@1

  signed int v4; // [sp+1Ch] [bp-B8h]@6

  char v5; // [sp+24h] [bp-B0h]@6

  char v6[127]; // [sp+25h] [bp-AFh]@8

  __int16 v7; // [sp+A4h] [bp-30h]@1

  int v8; // [sp+A6h] [bp-2Eh]@1

  int v9; // [sp+AAh] [bp-2Ah]@1

  int v10; // [sp+AEh] [bp-26h]@1

  int v11; // [sp+B2h] [bp-22h]@1

  int v12; // [sp+B6h] [bp-1Eh]@1

  int v13; // [sp+BAh] [bp-1Ah]@1

  int v14; // [sp+BEh] [bp-16h]@1

  __int16 v15; // [sp+C4h] [bp-10h]@1

  int v16; // [sp+C6h] [bp-Eh]@1

  int v17; // [sp+CAh] [bp-Ah]@1

  char v18; // [sp+CEh] [bp-6h]@1

 

  v15 = 0;

  v16 = 0;

  v17 = 0;

  v18 = 0;

  v7 = 0;

  v8 = 0;

  v9 = 0;

  v10 = 0;

  v11 = 0;

  v12 = 0;

  v13 = 0;

  v14 = 0;

  sub_401020("first,you need make program run\n");

  sub_401020("please input flag:\n");

  sub_401050("%s", &v7);                        // input

  v3 = &v7;

  do

  {

    v0 = *(_BYTE *)v3;

    v3 = (__int16 *)((char *)v3 + 1);

  }

  while ( v0 );

  if ( v3 != (__int16 *)((char *)&v7 + 1) && strlen((const char *)&v7) < 0x1E )// flag长度

  {

    sub_4013F0(&v15);

    sub_4012A0((const char *)&v7, (int)&v5);    // base64加密

    v4 = 10;

    while ( 1 )

    {

      v2 = v4--;

      if ( !v2 )

        break;

      if ( *((_BYTE *)&v15 + v4) != v6[2 * v4] || *(&v5 + 2 * v4) + 2 != (off_404018[v4] ^ 3) )// v15[i]=v6[i*2]||v5[2*i]+2==str1[i]^3

      {

        sub_401020("sry,u are wrong :(\n");

        system("pause");

        return 0;

      }

    }

    sub_401020("Congratulation, flag is:\nD0g3{%s}\n");

    system("pause");

    result = 0;

  }

  else

  {

    sub_401020("sry,u are wrong :(\n");

    system("pause");

    result = 0;

  }

  return result;

}

 
大概的运算意思就是
10.png
两组数据加密奇偶穿插其中例如 str1123456     Str2abcdef     Flag1a2b3c4d5e6f 拿到数据之后逆运算一下
[Asm] 纯文本查看 复制代码
# -*- coding: UTF-8 -*-
import base64
str1 = "LKd8gPYWS["
str2 = "2TVBnx0lnn"
flag  = ''
flags = ''
#MFe9bQXRNV
for i in range(len(str1)):
        flag += chr((ord(str1[i])^3) -2)
print(flag)

for j in range(10):
     if j % 2 ==0:
        flags += flag[j]+str2[j]
        print(flags)
     else:
        flags += flag[j]+str2[j]
        print(flags)
flags = base64.b64decode(flags)
print(flags)
#out  M2FTeV9BbnQxX0RlNnVn

免费评分

参与人数 4威望 +1 吾爱币 +10 热心值 +4 收起 理由
Hmily + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
voyage1969 + 1 + 1 我很赞同!
姚小宝 + 2 + 1 我很赞同!
qaz003 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yaoyao7 发表于 2018-11-30 10:26
这道题其实考察了很多知识点,当时由于比赛冲突,没仔细看就放弃了,现在看来题目质量不错啊
trombe108 发表于 2018-11-29 00:52
moshanghua 发表于 2018-11-29 01:00
voyage1969 发表于 2018-11-29 09:12
核心原理。。。看到这本书突然就好怀念
yssun 发表于 2018-11-29 09:19
不觉明历哦,看不懂;
18780334870 发表于 2018-11-29 09:19

好复杂的说啊
诸葛潇洒 发表于 2018-11-29 10:10
感谢分享
xjun 发表于 2018-11-29 10:57
现在的CTF真多啊, 啥啥杯都来了。。。
wisoft 发表于 2018-11-29 11:48
考察了好几个点啊。感谢分享
0xEASONs 发表于 2018-11-29 14:34
不错的文章
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 00:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表