[ACTF新生赛2020]rome

本文详细解析了一段涉及字符加密的代码,展示了如何通过特定运算规则将字母转换成密文,并揭秘了解密过程。核心内容包括字母替换、运算逻辑和加密算法实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先还是查壳,无壳的32程序,直接用ida打开

 

int func()
{
  int result; // eax
  int v1; // [esp+14h] [ebp-44h]
  int v2; // [esp+18h] [ebp-40h]
  int v3; // [esp+1Ch] [ebp-3Ch]
  int v4; // [esp+20h] [ebp-38h]
  unsigned __int8 v5; // [esp+24h] [ebp-34h]
  unsigned __int8 v6; // [esp+25h] [ebp-33h]
  unsigned __int8 v7; // [esp+26h] [ebp-32h]
  unsigned __int8 v8; // [esp+27h] [ebp-31h]
  unsigned __int8 v9; // [esp+28h] [ebp-30h]
  int v10; // [esp+29h] [ebp-2Fh]
  int v11; // [esp+2Dh] [ebp-2Bh]
  int v12; // [esp+31h] [ebp-27h]
  int v13; // [esp+35h] [ebp-23h]
  unsigned __int8 v14; // [esp+39h] [ebp-1Fh]
  char v15; // [esp+3Bh] [ebp-1Dh]
  char v16; // [esp+3Ch] [ebp-1Ch]
  char v17; // [esp+3Dh] [ebp-1Bh]
  char v18; // [esp+3Eh] [ebp-1Ah]
  char v19; // [esp+3Fh] [ebp-19h]
  char v20; // [esp+40h] [ebp-18h]
  char v21; // [esp+41h] [ebp-17h]
  char v22; // [esp+42h] [ebp-16h]
  char v23; // [esp+43h] [ebp-15h]
  char v24; // [esp+44h] [ebp-14h]
  char v25; // [esp+45h] [ebp-13h]
  char v26; // [esp+46h] [ebp-12h]
  char v27; // [esp+47h] [ebp-11h]
  char v28; // [esp+48h] [ebp-10h]
  char v29; // [esp+49h] [ebp-Fh]
  char v30; // [esp+4Ah] [ebp-Eh]
  char v31; // [esp+4Bh] [ebp-Dh]
  int i; // [esp+4Ch] [ebp-Ch]

  v15 = 81;
  v16 = 115;
  v17 = 119;
  v18 = 51;
  v19 = 115;
  v20 = 106;
  v21 = 95;
  v22 = 108;
  v23 = 122;
  v24 = 52;
  v25 = 95;
  v26 = 85;
  v27 = 106;
  v28 = 119;
  v29 = 64;
  v30 = 108;
  v31 = 0;
  printf("Please input:");
  scanf("%s", &v5);
  result = v5;
  if ( v5 == 65 )
  {
    result = v6;
    if ( v6 == 67 )
    {
      result = v7;
      if ( v7 == 84 )
      {
        result = v8;
        if ( v8 == 70 )
        {
          result = v9;
          if ( v9 == 123 )
          {
            result = v14;
            if ( v14 == 125 )
            {
              v1 = v10;
              v2 = v11;
              v3 = v12;
              v4 = v13;
              for ( i = 0; i <= 15; ++i )
              {
                if ( *((_BYTE *)&v1 + i) > 64 && *((_BYTE *)&v1 + i) <= 90 )
                  *((_BYTE *)&v1 + i) = (*((char *)&v1 + i) - 51) % 26 + 65;
                if ( *((_BYTE *)&v1 + i) > 96 && *((_BYTE *)&v1 + i) <= 122 )
                  *((_BYTE *)&v1 + i) = (*((char *)&v1 + i) - 79) % 26 + 97;
              }
              for ( i = 0; i <= 15; ++i )
              {
                result = (unsigned __int8)*(&v15 + i);
                if ( *((_BYTE *)&v1 + i) != (_BYTE)result )
                  return result;
              }
              result = printf("You are correct!");
            }
          }
        }
      }
    }
  }
  return result;
}

 直接就可以进入main函数,经过判断为大写字母还是小写字母进行不同的运算

脚本:

x = [81,115,119,51,115,106,95,108,122,52,95,85,106,119,64,108]
flag=''
for i in range(0,16):
    for k in range(0,127):
        z = k
        if k > 64 and k <= 90:
            k = (k - 51) % 26 + 65
        if k > 96 and k <= 122:
            k = (k - 79) % 26 + 97
        if(k==x[i]):
            flag+=chr(z)
print(flag)

flag{Cae3ar_th4_Gre@t}

### BUUCTF ACTF 新生 2020 Upload 题目解题报告 #### 文件上传漏洞概述 文件上传漏洞是指攻击者能够通过应用程序中的文件上传功能,向服务器上传恶意文件并执行特定操作的一种安全缺陷。这类漏洞通常涉及绕过文件类型验证、大小限制以及路径遍历等问题。 #### 题目描述 本题目来自BUUCTF平台上的ACTF新生2020事,名为`Upload-1`。参选手需要利用页面中存在的文件上传机制实现对目标系统的控制或数据获取[^1]。 #### 页面交互分析 访问给定链接后会看到一个带有灯泡图标的网页,在悬停于该图标之上时会出现用于触发文件选择对话框的区域。此设计隐藏了实际的功能入口点,增加了挑战难度[^2]。 #### 利用方法 为了成功完成任务,可以采取以下策略: - **准备测试环境**:搭建本地模拟服务端口监听工具(如Burp Suite),以便监控HTTP请求过程。 - **构造特殊文件**:创建一个小巧精悍的一句话PHP木马脚本作为待上传对象;确保其内容合法且不会被简单过滤规则阻挡。 ```php <?php @eval($_POST['cmd']);?> ``` - **规避检测措施**:修改文件扩展名或将有效载荷嵌入图片元数据内等方式尝试绕过潜在的安全防护手段。 - **提交表单并确认响应结果**:按照提示指引完成整个流程直至获得预期反馈信息为止。 #### 获取Flag 一旦上述步骤顺利完成,则可通过蚁剑等客户端软件建立远程连接至已植入webshell的目标主机,并在其根目录下定位到名为`flag`的关键文档。双击打开即可见最终答案字符串:`flag{d752d02c-324d-47e7-9b05-87d652492eb4}`[^3]。 #### 技术要点总结 此类竞项目主要考察参与者对于常见Web应用风险的认知程度及其动手实践能力,具体包括但不限于以下几个方面: - 对各种编程语言特性的深刻理解; - 掌握多种调试技巧以辅助逆向工程工作; - 能够灵活运用第三方插件提高效率降低复杂度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值