[MAR DASCTF明御攻防赛]enjoyit_1

news/2024/2/29 2:51:08

00 查看附件信息

C#、32bit
在这里插入图片描述
运行发现茶什么的,输入个1发现有回显,考虑分析代码在这里插入图片描述

01 分析代码

将其拖入 dnSpy 32bit,右键进入入口点
在这里插入图片描述
主要代码 a:

using System;
using System.Text;
using System.Threading;// Token: 0x02000003 RID: 3
internal class a
{// Token: 0x06000004 RID: 4 RVA: 0x0000209C File Offset: 0x0000029Cprivate static void a(string[] A_0){string text = "";byte[] a_ = new byte[26];new byte[26];byte[] array = new byte[8];byte[] array2 = new byte[]{2,5,4,13,3,84,11,4,87,3,86,3,80,7,83,3,0,4,83,94,7,84,4,0,1,83,3,84,6,83,5,80};uint[] array3 = new uint[]{288U,369U};b b = new b();Console.WriteLine("Welcome to my room, and please enjoy some tea by write what you want in this machine:");string text2 = Console.ReadLine();   if (!b.b(text2))    //判断每位字符的ASCII 码是否小于"_"或大于"z" (_`[a-z]){Thread.Sleep(1000000);}if (b.c(text2) != "yQXHyBvN3g/81gv51QXG1QTBxRr/yvXK1hC=")    //将输入的字符进行base64变表加密{Console.WriteLine("Oops");Thread.Sleep(1000000);    //睡眠....100w s}Console.WriteLine("And,wait a second!");for (int i = 0; i < 100000; i++)    //睡眠....n秒{Thread.Sleep(1000);Console.WriteLine(i + 1);}a_ = Encoding.Default.GetBytes(text2);b.b(ref array3, a_);    //进行加密,看的脑袋大,考虑到可以直接照搬,就没分析Console.WriteLine("Here is your tea, and flag!");text += array3[0].ToString("x2");    //这里没看懂,没学过c#的我痛哭,呜呜呜text += array3[1].ToString("x2");    //看懂了 ToString("x2") 转字符串,十六进制,小写,两位,连起来就不会了。现安的C#环境,也没整明白,我是笨比array = Encoding.Default.GetBytes(text);Console.Write("flag{");for (int j = 0; j < 32; j++)    //蜜汁算法{byte[] array4 = array2;int num = j;array4[num] ^= array[j % array.Length];}Console.Write(Encoding.Default.GetString(array2));Console.Write("}");Console.ReadKey();}
}

主要代码 b:

	第一次验证输入内容及base64变表加密(换表加密):
using System;// Token: 0x02000004 RID: 4
internal class b
{// Token: 0x06000006 RID: 6 RVA: 0x00002234 File Offset: 0x00000434public bool b(string A_0){for (int i = 0; i < A_0.Length; i++){if (A_0[i] < '_' || A_0[i] > 'z'){Console.WriteLine("Sorry,we don't have this tea");return false;}}return true;}// Token: 0x06000007 RID: 7 RVA: 0x00002278 File Offset: 0x00000478public string c(string A_0){string text = "";int num = A_0.Length / 3;int i;for (i = 0; i < num; i++){byte index = Convert.ToByte((int)('?' & A_0[i * 3] >> 2));byte index2 = Convert.ToByte((int)((int)(A_0[i * 3] & '\u0003') << 4 | A_0[1 + i * 3] >> 4));byte index3 = Convert.ToByte((int)((int)(A_0[1 + i * 3] & '\u000f') << 2 | A_0[2 + i * 3] >> 6));byte index4 = Convert.ToByte((int)(A_0[2 + i * 3] & '?'));text += this.a[(int)index].ToString();text += this.a[(int)index2].ToString();text += this.a[(int)index3].ToString();text += this.a[(int)index4].ToString();}if (i * 3 < A_0.Length){byte index = Convert.ToByte((int)('?' & A_0[i * 3] >> 2));byte index2;byte index3;byte index4;if (i * 3 + 1 < A_0.Length){index2 = Convert.ToByte((int)((int)(A_0[i * 3] & '\u0003') << 4 | A_0[i * 3 + 1] >> 4));index3 = Convert.ToByte((int)((int)(A_0[i * 3 + 1] & '\u000f') << 2));index4 = 64;}else{index2 = Convert.ToByte((int)((int)(A_0[i * 3] & '\u0003') << 4));index3 = 64;index4 = 64;}text += this.a[(int)index].ToString();text += this.a[(int)index2].ToString();text += this.a[(int)index3].ToString();text += this.a[(int)index4].ToString();}return text;}// Token: 0x06000008 RID: 8 RVA: 0x00002488 File Offset: 0x00000688public void b(byte[] A_0){string text = "";for (int i = 0; i < A_0.Length; i++){text += A_0[i].ToString("x2");}Console.WriteLine(text);}// Token: 0x06000009 RID: 9 RVA: 0x000024C8 File Offset: 0x000006C8public void b(ref uint[] A_0, byte[] A_1){uint num = 2654435464U;uint num2 = A_0[0];uint num3 = A_0[1];uint num4 = 0U;for (int i = 0; i < 32; i++){num2 += ((num3 << 4 ^ num3 >> 5) + num3 ^ num4 + (uint)A_1[(int)(num4 & 3U)]);num4 += num;num3 += ((num2 << 4 ^ num2 >> 5) + num2 ^ num4 + (uint)A_1[(int)(num4 >> 11 & 3U)]);}A_0[0] = num2;A_0[1] = num3;}// Token: 0x0600000A RID: 10 RVA: 0x00002534 File Offset: 0x00000734public void c(ref uint[] A_0, byte[] A_1){uint num = 2654435769U;uint num2 = A_0[0];uint num3 = A_0[1];uint num4 = num * 32U;for (int i = 0; i < 32; i++){num3 -= ((num2 << 4 ^ num2 >> 5) + num2 ^ num4 + (uint)A_1[(int)(num4 >> 11 & 3U)]);num4 -= num;num2 -= ((num3 << 4 ^ num3 >> 5) + num3 ^ num4 + (uint)A_1[(int)(num4 & 3U)]);}A_0[0] = num2;A_0[1] = num3;}// Token: 0x04000003 RID: 3public string a = "abcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXYZ=";    //变表
}

re.py:

使用注释上边的代码可以得到一串蜜汁字符串 'combustible_oolong_tea_plz?' 可以看到最后带一个 "?",
在第一轮输入验证限制了输入,其中没有 '?',所以正确输入应该是 'combustible_oolong_tea_plz'
import base64
enc = 'yQXHyBvN3g/81gv51QXG1QTBxRr/yvXK1hC='    #输入数据
intab =  'abcdefghijklmnopqrstuvwxyz0123456789+/ABCDEFGHIJKLMNOPQRSTUVWXY='     #变表
outtab = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'    #一般表
transtab = str.maketrans(intab,outtab)enc = enc.translate(transtab)
print(base64.b64decode(enc).decode())#上边是base64变表解密,下边是模拟算法没模拟明白
"""
A_0="combustible_oolong_tea_plz"
A_00=list(A_0)
j=0
k=[]
for i in A_00:k.append(ord(i))
print(k)
array3=[288,369]
num=2654435464
num2=array3[0]
num3=array3[1]
num4=0for i in range(32):num2 += ((num3 << 4 ^ num3 >> 5) + num3 ^ num4 + k[(num4 & 3)])num4 += numnum3 += ((num2 << 4 ^ num2 >> 5) + num2 ^ num4 + k[(num4 >> 11 & 3)])s0=num2
s1=num3
s0str=str(s0)
for i in range(len(s0str)):print(i)break
print(len(s0str))
st0=hex(s0)
st1=hex(s1)print(s0)
print(s1)
print(st0)
print(st1)
"""

03 使用 dnSpy 修改代码

因为接下来有印度 sleep,根本动不了,所以考虑修改代码
右键弹出下图窗口,因为编辑类和编辑方法都会报错,但是我们要修改数字,特征十分明显,所以我们选择编辑 IL指令
在这里插入图片描述
按照下图进行更改,均单击更改为1,确定在这里插入图片描述
在这里插入图片描述
文件 -> 全部保存,保存到新文件,打开新文件,输入上边得到的 ‘combustible_oolong_tea_plz’ 得到 flag在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/604105.html

相关文章

Cobalt Strike 的安装与简单使用

一、什么是Cobalt Strike Cobalt Strike 是一个为对手模拟和红队行动而设计的平台&#xff0c;主要用于执行有目标的攻击和模拟高级威胁者的后渗透行动。 二、如何使用 Cobalt Strike 分为服务器端和客户端&#xff08;在同一压缩文件中&#xff0c;只是运行的文件不同&…

DC1靶机渗透测试

Vuln hub 渗透测试实战 Vulnhub是一个开放的安全靶场&#xff0c;我们可以使用它所提供的环境进行渗透测试实战。 DC所有环境下载地址&#xff1a;https://www.vulnhub.com/series/dc,199/ 环境搭建&#xff1a; 1.下载 OVA&#xff08;Open Virtualization Appliance&…

DC2靶机渗透测试

文章目录目标&#xff1a;收集 5 个 flag一、信息收集1.主机发现2.端口扫描二、漏洞挖掘1.访问靶机 80 端口&#xff0c;查看其使用了什么 cms2.目录扫描3.扫描用户名4.生成字典5.爆破密码6.使用账号密码登陆&#xff0c;在登陆 Jerry 时发现 flag27.使用 ssh1.使用 jerry 登陆…

DC3靶机渗透测试

文章目录环境版本&#xff1a;开幕雷击&#xff1a;解决方法&#xff1a;一、信息收集1.主机发现2.端口扫描二、漏洞挖掘1.访问 ip2.目录扫描及版本扫描3.搜索 joomla 框架对应版本漏洞&#xff0c;并打印详细信息4.使用 SQLmap 对 joomla 的数据库进行攻击5.使用 john 对密码 …

DC4靶机渗透测试

文章目录环境版本&#xff1a;一、信息收集1.主机发现2.端口扫描二、漏洞挖掘1.访问目标 ip&#xff0c;查看内容2.使用 BP 进行爆破密码3.使用密码登陆4.使用 BP 查看执行命令流量包5.替换命令来使用 nc 建立连接7.使用 nc 将靶机文件传输到攻击机8.使用 hydra 爆破 ssh 密码9…

DC5靶机渗透测试

文章目录环境版本&#xff1a;一、信息收集1.主机发现2.端口扫描二、漏洞发现1.访问靶机 web 服务2.尝试利用文件包含漏洞3.尝试将恶意文件写入日志4.利用文件包含访问日志并进行利用三、提权1.查看可以 root 权限使用的命令2.漏洞搜索3.查找 exp&#xff0c;并查看内容4.使用 …

DC6靶机渗透测试

环境版本&#xff1a; VMware pro 16Kali 2021.1(虚拟机)DC-6(虚拟机) 一、信息收集 1.主机发现 arp-scan -l2.端口扫描 nmap -A -p- 192.168.2.170发现开启了 22 端口&#xff1a;ssh服务 80 端口&#xff1a;http服务&#xff0c;wordpress框架 域名&#xff1a;wordy&a…

DC7靶机渗透测试

文章目录环境版本&#xff1a;一、信息收集1.主机发现2.端口扫描二、漏洞扫描/利用1.访问靶机 web 服务2.信息收集3.ssh 连接4.查看文件权限5.查看文件内容7.利用框架漏洞8.安装 PHP 插件10.漏洞利用总结&#xff1a;环境版本&#xff1a; VMware pro 16Kali 2021.1(虚拟机)DC…

DC8靶机渗透测试

文章目录一、信息收集1.主机发现2.端口扫描二、漏洞挖掘、利用1.访问靶机 web 服务2.使用 SQLmap 进行爆内容3.使用 john 进行爆破 hash4.目录扫描5.登陆后台进行查找可编辑 PHP 页面6.获取 shell三、提权1.尝试 suid 提权2.使用 python 获得交互式 shell3.尝试使用 exim4 进行…

DC9靶机渗透测试

文章目录一、信息收集1.主机发现2.端口扫描二、漏洞挖掘1.访问靶机 web 服务2.使用 SQLmap 进行信息收集三、提权1.使用 sudo 查看可以 root 权限执行的文件2.逐层进入并查看该目录环境版本&#xff1a;VMware pro 16Kali 2021.1(虚拟机)DC-9(虚拟机) 一、信息收集 1.主机发现…

Kali2021.2 VMware最新版安装步骤

这里演示的是 kali 2020 版本&#xff0c;kali VMware 目前所有版本安装方法大致相同 一、下载最新版 kali VMware版本&#xff1a; &#xff08;这里网址更新了&#xff0c;但是区别不大&#xff09; https://www.kali.org/get-kali/#kali-virtual-machines二、解压打开 下…

Lampiao靶机渗透测试

文章目录一、信息收集1.主机发现2.端口扫描二、漏洞挖掘1.查看对方web服务2.使用 msfconsole get shell脏牛提权漏洞&#xff08;CVE-2016-5191&#xff09;三、脏牛提权1.在 kali 查找 exp2.使用 python 传输 exp3.编译利用一、信息收集 1.主机发现 arp-scan -l 2.端口扫描 …

HA: Dhanush靶机渗透测试

文章目录一、信息收集1.主机发现2.端口扫描3.查看 web 服务二、漏洞挖掘1.使用 cewl 生成字典2.使用 hydra 进行爆破3.ssh 连接4.尝试 sudo 提权靶机介绍&#xff1a;一、信息收集 1.主机发现 arp-scan -l发现靶机 ip&#xff1a;192.168.1.119 2.端口扫描 nmap -A -p- 192…

HA: Forensics靶机渗透测试

文章目录靶机说明&#xff1a;一、信息收集1.主机发现2.端口扫描二、漏洞挖掘1.访问靶机 web 服务2.使用 dirb 进行目录扫描3.使用 exiftool 提取数据4.使用 dirb 扫描 txt 文件5.PGP解密6.破解密码7.分析 lsass.DMP 文件三、使用 msfconsole 进行后渗透1.kali 打开 msfconsole…

HA: InfinityStones靶机渗透测试

文章目录靶机信息一、信息收集1.主机发现2.端口扫描3.目录扫描二、漏洞挖掘1.访问 192.168.1.1082.访问 /img 目录3.访问 https 服务&#xff08;443&#xff09;端口4.查看 /wifi/ 路径5.访问 /aether.php 页面6.访问 8080 端口7.ssh 登陆 morag 账户靶机信息 灭霸认为&#…

SciencePub学术 | 计算机科学类重点SCIEEI征稿中

SciencePub学术 刊源推荐:计算机科学类重点SCIE&EI征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机科学类重点SCIE&EI 【期刊简介】IF&#xff1a;3.0-3.5&#xff0c;JCR 2区&#xff0c;中科院4区&#xff1b; 【检…

kali安装vscode和无法启动解决方法

一、安装 1&#xff09;源安装 使用如下命令来增加源&#xff1a; curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg sh -c echo "deb [archamd64] https://packag…

HA: SHERLOCK 靶机渗透取证

HA: SHERLOCK 靶机渗透取证 靶机描述&#xff1a; DescriptionHA: Sherlock! This lab is based on the famous investigator’s journey on solving the Curious Case of Harshits murder!This is a Forensic based Capture-the-Flag and is not a Boot-to-RootSo, put on yo…

with上下文管理

标题[TOC](python with上下文管理) 上下文管理协议: class person:def __init__(self,name):self .name name def __enter__(self):print(这是with定义的对象进到了enter方法中执行操作)return selfdef __exit__(self,exc_type,exc_value,exc_tb):print(with对象在enter中执…

1.8推导式

列表推导式列表推导式,生成器表达式以及其他推导式,首先我们先看一下这样的代码,给出一个列表,通过循环,想列表中添加1~10:li [] for i in range(10):li.append(i) print(li)列表推导式的常⽤语法: [结果 for 变量 in 可迭代对象] ls [i for i in range(10)] print(ls)列表…
最新文章