2024数信杯部分wp

2024年数信杯部分wp

菜的一批,做了几道取证还有一道合约题,合约没怎么接触过 ,后续有时间去学习下😭😭

不安全的U盘.1

vol的插件直接出,hahaha123

1
vol.py -f WIN-T89OD3C9LOC-20231229-081734.raw --profile=Win7SP1x64 mimikatz 

不安全的U盘.2

沙箱分析一下(这里用的微步),看到关联文件AcroRd32.exe

vol2查找一下该文件

1
vol.py -f WIN-T89OD3C9LOC-20231229-081734.raw --profile=Win7SP1x64 filescan |grep "AcroRd32.exe"

文件地址就是:C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe,把空格去除后就是flag

不安全的U盘.3

用netscan查看一下网络连接情况,对应题2中的恶意文件AcroRd32.exe的地址就是答案

1
vol.py -f WIN-T89OD3C9LOC-20231229-081734.raw netscan --profile=Win7SP1x64 

192.168.31.238:4444

不安全的U盘.4

首先查找镜像中所有exe文件

1
vol.py -f WIN-T89OD3C9LOC-20231229-081734.raw --profile=Win7SP1x64 filescan |grep ".exe" 

尝试了多次后,发现在Music文件夹目录下,有一个f.exe,尝试查询同目录下文件,在这里发现了c.toml

将该文件下载下来进行分析,打开后成功发现外联地址以及账户信息

所以最后答案就是 118.180.126.13_6770

Bitcoin.2

这题是赛后参考LVV攻防取证的文章复现的,大家可以微信搜索他们公众号看原文章,这里先用FTK Imager挂载上ad1镜像

这是使用了一个findwallet工具,首先安装该工具

1
npm install findwallet -g

在镜像目录下运行

1
findwallet -i.

补全全部路径后就是 C:\Windows\System32/config/systemprofile/AppData/Roaming/Microsoft/SystemCertificates/My/AppContainerUserCertRead.sys

Bitcoin.4

题目给出来一个ad1镜像文件以及一个CTF.SOL源码文件,简单分析源码文件中主要内容,下面这段代码有些问题

1
2
3
4
function transferFrom(address from, address to, uint256 value) public notFrozen(from) returns (bool) {
require(msg.sender == owner);
return super.transferFrom(from, to, value);
}

transferFrom的实现引入了一项严重的限制:这里的require(msg.sender == owner);要求只有合约的owner能调用此函数。这阻止了授权用户使用他们被授权转移的代币。这实际上赋予了合约所有者对任何人代币的完全控制权,只要之前有过授权。

答案直接输transferFrom

网站的数据绝对安全1

看登录逻辑,当code为1时用户不存在,查找code不为1的用户 :

Livwdaw用户为2,此用户存在。

rrrcccc

1、 手动脱壳

2、 把004012BD处地址的jzpatch成jmp以绕过反调试

3、 Dump密钥流,

1
2
3
4
5
6
7
8
9
10
11
12
13
cip = b"Whatareyourencryption&decryptionbasics"

key1 = bytearray([0x0000001C, 0x000000CB, 0x000000F5, 0x00000053, 0x00000091, 0x000000CC, 0x0000003B, 0x00000066, 0x00000004, 0x0000007D, 0x000000BA, 0x000000D2, 0x00000056, 0x000000CE, 0x00000014, 0x000000A4, 0x000000E8, 0x0000007F, 0x000000C2, 0x000000C4, 0x0000002B, 0x00000086, 0x00000032, 0x000000F0, 0x000000F7, 0x000000EA, 0x000000FB, 0x000000F0, 0x00000078, 0x00000034, 0x0000009A, 0x00000003, 0x00000013, 0x000000A2, 0x00000091, 0x00000037, 0x00000048, 0x00000066])

key2 = bytearray([0x2d,0xcf,0xf5,0x40,0x8b,0xda,0x6d,0x7b,0x9,0x3e,0xf1,0xd6,0xb,0x99,0x7,0xe8,0xa9,0x6f,0x9c,0xce,0x74,0xc4,0x64,0xa6,0xf0,0xae,0xb0,0xb1,0x39,0x64,0xc5,0x55,0x43,0xf4,0x81,0x6e,0x1a,0x68])

flag = ""

for i in range(38):

flag += chr(cip[i] ^ key1[i] ^ key2[i])

print(flag)

得到flag:

flag{d3db69a34a51d7e1d23d621590827c01}

drinktea

1、 结合chatgpt分析字节码

2、 写出解密脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void decipher(unsigned int num_rounds, uint32_t v[2], uint32_t const key[4]) {  
unsigned int i;
uint32_t v0=v[0], v1=v[1], delta=0x21222324, sum=delta*num_rounds;
for (i=0; i < num_rounds; i++) {

v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum >> 11) & 3]);
sum -= delta;
v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]);
}
v[0]=v0; v[1]=v1;


}
void xTea()
{
unsigned int r=32;

uint32_t cip[] = {392252415,2941946969,1122976151,1335193774,815478816,2529100980,2237049875,188954780};

for(int i=0;i<8;i+=2){
uint32_t v[2] = {cip[i],cip[i+1]};
uint32_t const k[4]={1900550021,2483099539,2205172504,1359557939};

decipher(r, v, k);
printf("%c",v[0] & 0x000000ff);
printf("%c",(v[0] & 0x0000ff00) >> 8);
printf("%c",(v[0] & 0x00ff0000) >> 16);
printf("%c",(v[0] & 0xff000000) >> 24);

printf("%c",v[1] & 0x000000ff);
printf("%c",(v[1] & 0x0000ff00) >> 8);
printf("%c",(v[1] & 0x00ff0000) >> 16);
printf("%c",(v[1] & 0xff000000) >> 24);
}

}

int main(){
xTea();
}

拿到flag: acb8739759dc496ccc945703037e037f


2024数信杯部分wp
https://erkangkang.github.io/2024/04/14/2024年数信杯部分wp/
作者
尔康康康康
发布于
2024年4月14日
许可协议