2023第二届陇剑杯网络安全大赛 预选赛Writeup

news2024/11/26 2:44:17

题目附件

链接:https://pan.baidu.com/s/1J20VusdMjit4coWAi5lnnQ 
提取码:6emq 

文章目录

  • HW
    • hard_web_1
    • hard_web_2
    • hard_web_3
  • SS
    • sevrer save_1
    • sevrer save_2
    • sevrer save_3
    • sevrer save_4
    • sevrer save_5
    • sevrer save_6
    • sevrer save_7
    • sevrer save_8
  • WS
    • Wireshark1_1
    • Wireshark1_2
    • Wireshark1_3
    • Wireshark1_4
  • IR
    • IncidentResponse_1
    • IncidentResponse_2
    • IncidentResponse_3
    • IncidentResponse_4
    • IncidentResponse_5
    • IncidentResponse_6
    • IncidentResponse_7
  • SSW
    • SmallSword_1
    • SmallSword_2
    • SmallSword_3
  • EW
    • ez_web_1
    • ez_web_2
    • ez_web_3
  • BF
    • baby_forensics_1
    • baby_forensics_2
    • baby_forensics_3
  • TP
    • tcpdump_1
    • tcpdump_2
    • tcpdump_3
    • tcpdump_4
    • tcpdump_5
  • HD
    • hacked_1
    • hacked_2
    • hacked_3
    • hacked_4


HW

hard_web_1

在这里插入图片描述

这题其实可以参考这篇文章:从一道题分析Nmap SYN/半连接/半开放扫描流量
TCP扫描确认端口开放的标志就是返回SYN+ACK的包,所以只需要过滤SYN、ACK状态都为1的包即可

tcp.flags.syn==1 and tcp.flags.ack==1

在这里插入图片描述

答案

80,888,8888

hard_web_2

在这里插入图片描述

过滤http发现这里有个shell.jsp

在这里插入图片描述

右键追踪HTTP流,可以看到shell.jsp的内容,哥斯拉AES加密的shell
PS:选择HTTP流是因为经过gzip解码的,如果是追踪TCP流还需要解码gzip

在这里插入图片描述

那么经过shell.jsp的流量就是AES加密过的,密钥已知:748007e861908c03

在这里插入图片描述

选择原始数据,以0d0a0d0a请求体/响应体请求头/响应头的界限

在这里插入图片描述

然后直接丢 CyberChef 梭哈

在这里插入图片描述
在这里插入图片描述

能解密流量了,就慢慢看过找flag即可,读取flag在tcp.stream eq 20053

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

flag{9236b29d-5488-41e6-a04b-53b0d8276542}

hard_web_3

在这里插入图片描述
webshell连接密码就是:748007e861908c03

cmd5撞一下即可得知是(不过这条收费):14mk3y

PS C:\Users\Administrator> php -r "var_dump(md5('14mk3y'));"
Command line code:1:
string(32) "748007e861908c03ba0830d5c47fd282"

SS

sevrer save_1

在这里插入图片描述

过滤http,前面都是爆破的干扰流量,直接看到后面

在这里插入图片描述

从这个/helloworld/greeting开始追踪TCP流,直接搜索引擎检索Payload关键字即可锁定CVE编号

在这里插入图片描述

CVE-2022-22965

sevrer save_2

在这里插入图片描述

继续追踪TCP流,在tcp.stream eq 106,即可发现反弹shell的IP和端口

在这里插入图片描述

192.168.43.128:2333

sevrer save_3

在这里插入图片描述

/home/guests/下发现一个main文件,是ELF可执行文件

在这里插入图片描述

main

sevrer save_4

在这里插入图片描述

生成的用户名和密码,直接查看/etc/passwd以及/etc/shadow

在这里插入图片描述
在这里插入图片描述

新创建的用户名和密码:ll:123456

sevrer save_5

在这里插入图片描述

/home/guests/.log.txt中有一个外网IP:172.105.202.239

在这里插入图片描述

sevrer save_6

在这里插入图片描述

main文件的修改时间来看,以及.idea中两个看着很像挖矿程序的修改时间完全相同来猜测,lolMinermine_doge.sh是病毒运行后释放的文件

在这里插入图片描述
在这里插入图片描述

lolMiner,mine_doge.sh

sevrer save_7

在这里插入图片描述

打开mine_doge.sh

在这里插入图片描述

很明显,矿池地址:doge.millpools.cc:5567

sevrer save_8

在这里插入图片描述

钱包地址:DOGE:DRXz1q6ys8Ao2KnPbtb7jQhPjDSqtwmNN9

WS

Wireshark1_1

在这里插入图片描述

就两个IP,很明显被TELNET登陆的IP是:192.168.246.28

在这里插入图片描述

Wireshark1_2

在这里插入图片描述

直接追踪TCP流即可发现口令为:youcannevergetthis

在这里插入图片描述

Wireshark1_3

在这里插入图片描述
在这里插入图片描述

Downloads

Wireshark1_4

在这里插入图片描述
在这里插入图片描述

mysql

IR

IncidentResponse_1

在这里插入图片描述

VMware打开irTest.ova,中间有一些报错,问题不大,继续即可。查看一下root用户最新更新过的记录文件: .bash_history.viminfo

在这里插入图片描述

.bash_history看了有一些修改操作,但是看了看这些文件内容貌似也没发现挖矿痕迹

在这里插入图片描述

.viminfo发现了大量修改redis相关配置

在这里插入图片描述
在这里插入图片描述

查看redis.conf,这里YOUR_WALLET_ADDRESS就很可疑了

在这里插入图片描述

URL地址一查

在这里插入图片描述
那么挖矿程序应该就是redis

└─# echo -n '/etc/redis/redis-server'|md5sum|cut -d '' -f1
6f72038a870f05cbf923633066e48881

IncidentResponse_2

在这里插入图片描述

└─# echo -n 'donate.v2.xmrig.com'|md5sum|cut -d '' -f1
3fca20bb92d0ed67714e68704a0a4503

IncidentResponse_3

在这里插入图片描述

直接查看jar包运行启动后的日志文件nohup.log

在这里插入图片描述

在这里插入图片描述

Shiro反序列化

echo -n 'shirodeserialization'|md5sum|cut -d '' -f1
3ee726cb32f87a15d22fe55fa04c4dcd

IncidentResponse_4

在这里插入图片描述
攻击者都植入挖矿程序了,肯定登陆过服务器,直接last查看登录记录

在这里插入图片描述

也可以查看Nginx中的访问日志,tail /var/log/nginx/access.log

在这里插入图片描述

PS C:\Users\Administrator> php -r "var_dump(md5('81.70.166.3'));"
Command line code:1:
string(32) "c76b4b1a5e8c9e7751af4684c6a8b2c9"

IncidentResponse_5

在这里插入图片描述

就是最后访问时带的 UserAgent

在这里插入图片描述

PS C:\Users\Administrator> php -r "var_dump(md5('mozilla/5.0(compatible;baiduspider/2.0;+http://www.baidu.com/search/spider.html)'));"
Command line code:1:
string(32) "6ba8458f11f4044cce7a621c085bb3c6"

IncidentResponse_6

在这里插入图片描述

authorized_keys不为空,推测攻击者开启了root的SSH私钥登录

在这里插入图片描述

PS C:\Users\Administrator> php -r "var_dump(md5('/root/.ssh/authorized_keys'));"
Command line code:1:
string(32) "a1fa1b5aeb1f97340032971c342c4258"

IncidentResponse_7

在这里插入图片描述

/lib/systemd/system/redis.service这个配置很可疑,一直在重启redis,也是在不断维持植入的矿机程序

在这里插入图片描述

PS C:\Users\Administrator> php -r "var_dump(md5('/lib/systemd/system/redis.service'));"
Command line code:1:
string(32) "b2c5af8ce08753894540331e5a947d35"

SSW

SmallSword_1

在这里插入图片描述

直接过滤:tcp contains "$_POST"

在这里插入图片描述

6ea280898e404bfabd0ebb702327b18f

SmallSword_2

在这里插入图片描述

过滤http,从最后往前看,因为前面大多是扫描流量,没啥关键的。蚁剑的base64传输,直接解码一条一条看即可

tcp.stream eq 142发现写入的内容

在这里插入图片描述
在这里插入图片描述

ad6269b7-3ce2-4ae8-b97f-f259515e7a91

SmallSword_3

在这里插入图片描述

tcp.stream eq 130有一个exe,很大

在这里插入图片描述

选择为原始数据全部复制出来,去掉第一行的HTTP请求包的内容,另存为hexdata.txt

在这里插入图片描述
Python简单处理即可

with open('hexdata.txt', 'r') as f:
	with open('1.exe', 'wb') as f1:
		lines = f.readlines()
		for line in lines:
			line = line.strip()
			f1.write(bytes.fromhex(line))

将HTTP响应包的头以及多余数据去掉,保存

在这里插入图片描述
在这里插入图片描述
是一个Python打包的exe文件,运行得到一个test.jpg

在这里插入图片描述

查看文件头,是一个PNG图片,修改后缀为.PNG,打开后CRC校验报错,推测修改了图片高度

在这里插入图片描述

修改高度即可

在这里插入图片描述

flag3{8f0dffac-5801-44a9-bd49-e66192ce4f57}

EW

ez_web_1

在这里插入图片描述

一开始以为是这个d00r.php,试了发现不对

在这里插入图片描述

然后在检索d00r.php时发现了一个名为ViewMore.php的文件

在这里插入图片描述

右键追踪TCP流发现是ViewMore.php写入的d00r.php

在这里插入图片描述

所以答案为:ViewMore.php

ez_web_2

在这里插入图片描述

追踪TCP流发现执行了ifconfig,响应内容格式是Gzip,问题不大

在这里插入图片描述

对当前流选择右键,追踪HTTP就可以看到明文了

在这里插入图片描述
在这里插入图片描述

192.168.101.132

ez_web_3

在这里插入图片描述
还是这个流:tcp.stream eq 100098

这里写入了一个k3y_file

在这里插入图片描述

是一个压缩包,直接转化

from base64 import *

base64_data = 'UEsDBBQAAQAAANgDvlTRoSUSMAAAACQAAAAHAAAAa2V5LnR4dGYJZVtgRzdJtOnW1ycl/O/AJ0rmzwNXxqbCRUq2LQid0gO2yXaPBcc9baLIAwnQ71BLAQI/ABQAAQAAANgDvlTRoSUSMAAAACQAAAAHACQAAAAAAAAAIAAAAAAAAABrZXkudHh0CgAgAAAAAAABABgAOg7Zcnlz2AE6DtlyeXPYAfldXhh5c9gBUEsFBgAAAAABAAEAWQAAAFUAAAAAAA=='
with open('k3y_file.zip', 'wb') as f:
	f.write(b64decode(base64_data))

在这里插入图片描述

有密码,往回找找线索,还是这个流,找到疑似密码:7e03864b0db7e6f9

在这里插入图片描述

解压得到答案:7d9ddff2-2d67-4eba-9e48-b91c26c42337

BF

baby_forensics_1

在这里插入图片描述
在这里插入图片描述

给了两个文件,一个磁盘镜像,另一个猜测是内存镜像,DiskGenius打开.vmdk

在这里插入图片描述

发现是BitLocker加密的磁盘,但是给了内存镜像,直接尝试EFDD提取恢复密钥,先使用ArsenalImageMounter将BitLocker加密磁盘挂载起来

在这里插入图片描述

然后EFDD操作如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

成功获取恢复密钥

560604-255013-655633-128854-663223-316063-484946-476498

输入恢复密钥

在这里插入图片描述

打开得到key.txt

在这里插入图片描述

最扯的来了,虽然知道后觉得确实有点像rot47,但是还是觉得很脑洞。。。。

在这里插入图片描述

the key is 2e80307085fd2b5c49c968c323ee25d5

或者R-studio直接梭哈

在这里插入图片描述

baby_forensics_2

在这里插入图片描述
在这里插入图片描述

直接将calc.exe的内存映射导出来

在这里插入图片描述

然后将2844.dmp修改后缀为GIMP可加载的.data格式,使用GIMP打开,然后就是不断地调整位移、宽度。先不断调整位移使之有图像的阴影等,然后宽度适当即可,如下:

在这里插入图片描述

或者使用这是 Volatility 3 工具的插件命令windows,用于执行与 Windows 相关的分析。通过运行此命令,您将获取有关内存转储中运行的 Windows 进程、模块、文件和注册表等信息

在这里插入图片描述

然后在其中寻找calc.exe和PID,找到这个Windows Handler的句柄名

在这里插入图片描述

7598632541

baby_forensics_3

在这里插入图片描述

pslist之前一眼便签,肯定有东西,参考我之前的文章:西湖论剑2021中国杭州网络安全技能大赛部分Writeup

直接寻找.snt结尾的文件,导出

在这里插入图片描述

替换便签原来的存储位置,然后打开便签,得到密文

在这里插入图片描述

U2FsdGVkX195MCsw0ANs6/Vkjibq89YlmnDdY/dCNKRkixvAP6+B5ImXr2VIqBSp94qfIcjQhDxPgr9G4u++pA==

密钥找了好久,用R-Studio翻,最后在C:/Users/admin/Music下找到个i4ak3y

PS:R-Studio是个神器,好好利用

在这里插入图片描述

直接尝试AES解密

在这里插入图片描述

TP

tcpdump_1

在这里插入图片描述

当爆破登录失败返回如下:

在这里插入图片描述

当请求正确,返回如下:

在这里插入图片描述

根据返回特征,直接尝试检索:tcp contains "{\"errCode\":200}"

在这里插入图片描述

在这里插入图片描述

TMjpxFGQwD:123457

tcpdump_2

在这里插入图片描述
在这里插入图片描述

PS C:\Users\Administrator> php -r "var_dump(md5('accessToken=f412d3a0378d42439ee016b06ef3330c; zyplayertoken=f412d3a0378d42439ee016b06ef3330cQzw=; userid=1'));"
Command line code:1:
string(32) "383c74db4e32513daaa1eeb1726d7255"

tcpdump_3

在这里插入图片描述

直接过滤关键字:tcp contains "jdbc" and tcp contains "username" and tcp contains "password"

在这里插入图片描述

zyplayer:1234567

tcpdump_4

在这里插入图片描述

直接检索jdbc的payload:tcp contains "jdbc:"
EXP应该是这个:custom.dtd.xml

在这里插入图片描述

CVE编号直接将利用的包名和关键字贴上搜索引擎找就行

在这里插入图片描述

CVE-2022-21724:custom.dtd.xml

tcpdump_5

在这里插入图片描述

过滤http,从后往前追踪TCP流即可发现

在这里插入图片描述

fscan

HD

hacked_1

在这里插入图片描述

登录有AES加密,密钥、iv都已知

在这里插入图片描述

接下来只需要找登录成功的用户名和密码

在这里插入图片描述

在这里插入图片描述

直接AES解密

在这里插入图片描述

flag{WelC0m5_TO_H3re}

hacked_2

在这里插入图片描述
直接关键字检索:tcp contains "SECRET"

在这里插入图片描述

ssti_flask_hsfvaldb

hacked_3

在这里插入图片描述

SECRET_KEY,直接解密JWT即可,找到执行命令的包

在这里插入图片描述

请求包:

PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdx1EKwyAMANCrDEGiPz1Ar1KGZBi7gBpplH2Idy_d-3vTDKWrYiGzm2k5vZRUWeo2WsRObkLKeMKeuekoB4RwZvlg1hDg_S917lSeOhAFf0CTRvXp7ytYGPx2EUbnl7drWqqRk11m3cGmKw0.YpIQcw.J5vs8t8bAr0xDIxF6EqUAH2kkLE"
{'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}

返回包:

PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJwdylsKAyEMQNGtFEGiUGYBs5VpkRQz04AvjNIPce-t_TyXO9QZ8FK7quQfSd1VF6oJI_3S0HzehEQ4p60Xj43MgPXDHrhIjwc4d4X8wiDOwfNPatwoLhrIAvaAkgulxc87Y2SwWyX0xk6r59CUPJ96qvkFHeUvmg.YpIQkg.65xf8l2g9fXAImkfyihId46KkY4"
{'flag': 'red\n', 'username': "{%if session.update({'flag':lipsum['__globals__']['__getitem__']('os')['popen']('whoami').read()})%}{%endif%}"}

答案:red

hacked_4

在这里插入图片描述

在这里插入图片描述

PS D:\Tools\Web\CTF\flask-session-cookie-manager> python .\flask_session_cookie_manager3.py decode -s "ssti_flask_hsfvaldb" -c ".eJx1jUsOgkAQBa-Cs2lJCEbdcQI9A0w6DdMaYjPgfAwJmbsLC1fq7r2kKrWo6NlZGlhValmiE7yNrkS8y9iSeMQaENvYS-jt-kDXwC8S0PtG0TSVZAxulovCezhcreEZigw-Q2hoDWUVXFhk3GXH0xnyRhULoONnZB-wCzP6QN0Dqt_9b1AXsMb_8F10jm3AjdApT0mlNx2uUsY.YpIRHQ.qS_PWmxt4i4cjHYBzDz-rUdTZns"
{'username': '{{url_for.__globals__[\'__builtins__\'][\'eval\']("app.add_url_rule(\'/Index\', \'Index\', lambda :\'Hello! 123\')",{\'_request_ctx_stack\':url_for.__globals__[\'_request_ctx_stack\'],\'app\':url_for.__globals__[\'current_app\']})}}'}

答案:Index

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/969724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

46、TCP的“三次握手”

在上一节中,TCP首部常用的几个选项,有些选项的参数就是在通信双方在建立TCP连接的时候进行确定和协商的。所以在学习过TCP报文首部之后,下面我们开始学习TCP的连接建立。 TCP的一个特点是提供可靠的传输机制,还有一个特点就是TCP…

字符型注入([SWPUCTF 2021 新生赛]easy_sql)

拿到题目,查看源码,可知是要输入参数wllm。 输入参数/?wllm1,得到会显 继续输入参数/?wllm1,报错,确定为字符型漏洞 1.查看字段列表,发现在字段4报错,确定为3列 ?wllm-1 order by 3-- ?wl…

基于JavaScript粒子流动效果

这是一个HTML文件,主要包含了一些CSS样式和JavaScript代码,用于创建一个动画效果。 在CSS部分,定义了一些基本的样式,包括页面的背景颜色、位置、大小等。特别的,定义了两种球形元素(.ball_A 和 .ball_B&am…

静态路由配置实验:构建多路由器网络拓扑实现不同业务网段互通

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. 配置 IP 地址2. 按照需求配置静态路由,实现连接 PC 的业务网段互通 摘要: 本实验旨在通过配置网络设备的IP地址和静态路由,实现不同业务网段之间的互通。通过构建一组具有…

nginx-基于range做断点续传

nginx默认开启了range断点续传,只要再请求时载请求头上添加header,range,nginx就可以根据range范围返回相应的字节。

zabbix配置钉钉告警

钉钉告警python脚本 cat python20 #!/usr/bin/python3 #coding:utf-8 import requests,json,sys,os,datetime # 机器人的Webhook地址 webhook"钉钉" usersys.argv[1] textsys.argv[3] data{"msgtype": "text","text": {"conten…

Leetcode 2431.最小偶倍数

给你一个正整数 n ,返回 2 和 n 的最小公倍数(正整数)。 示例 1: 输入:n 5 输出:10 解释:5 和 2 的最小公倍数是 10 。示例 2: 输入:n 6 输出:6 解释&#…

docker 笔记10:Docker轻量级可视化工具Portainer

1. 是什么 Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理Docker环境,包括单机环境和集群环境。 2.安装 https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux 步骤 docker命令安装 docker run -d …

【postgresql 基础入门】数据库服务的管理

数据库服务管理 ​专栏内容: postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤&#xff…

第一章:绪论

1.1 系统架构概述 架构是体现在组件中的一个系统的基本组织、它们彼此的关系与环境的关系以及指导它的设计和发展的原则。 系统是组织起来完成某一特定功能火一组功能的组件集。系统这个术语包括了单独的应用程序、传统意义上的系统、子系统、系统之系统、产品线、整个企业及…

三层交换实验:实现不同VLAN间的互通与路由配置

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. PC 配置 IP 地址2. PC2 属于 Vlan10,PC3 属于 Vlan20,在三层交换机上配置 Vlanif 三层接口实现 Vlan10 和 Vlan20 三层互通3. 测试在 PC3 上 Ping PC4 ,可以 Ping 通 PC4…

吴恩达《面向开发者的提示词工程》

Ref: 【中英字幕 | P01 Introduction】2023吴恩达新课《面向开发者的提示词工程》_哔哩哔哩_bilibili 对应的笔记 ChatGPT Prompt - 知乎 本课程主要介绍指令微调LLM的最佳实践 在大型语言模型或LLM的开发中,大体上有两种类型的LLM,我将其…

kotlin协程广播管道BroadcastChannel,订阅管道openSubscription

kotlin协程广播管道BroadcastChannel&#xff0c;订阅管道openSubscription import kotlinx.coroutines.* import kotlinx.coroutines.channels.*fun main(args: Array<String>) {//广播消息//也可以把普通Channel转换成广播Channel//val channel Channel<Int>()/…

企业场景篇

企业场景篇 设计模式 简单工厂模式 工厂&#xff08;factory&#xff09;处理创建对象的细节&#xff0c;一旦有了SimpleCoffeeFactory&#xff0c;CoffeeStore类中的orderCoffee()就变成此对象的客户&#xff0c;后期如果需要Coffee对象直接从工厂中获取即可。这样也就解除了…

【javaweb】学习日记Day9 - Mybatis 基础操作

目录 一、删除 &#xff08;1&#xff09;在mapper接口执行sql删除语句 ① 注解后sql语句没有提示怎么办&#xff1f; &#xff08;2&#xff09;测试层 &#xff08;3&#xff09;开启mybatis日志 &#xff08;4&#xff09;预编译SQL 二、新增 &#xff08;1&#…

深入探讨Java虚拟机(JVM):执行流程、内存管理和垃圾回收机制

目录 什么是JVM&#xff1f; JVM 执行流程 JVM 运行时数据区 堆&#xff08;线程共享&#xff09; Java虚拟机栈&#xff08;线程私有&#xff09; 什么是线程私有? 程序计数器&#xff08;线程私有&#xff09; 方法区&#xff08;线程共享&#xff09; JDK 1.8 元空…

Linux下 Socket服务器和客户端文件互传

目录 1.项目描述 2.函数准备 2.1 gets函数 2.2 popen函数、fread函数 2.3 access 函数 2.4 exit 函数 2.5 strtok 函数 2.6 chdir函数 3.项目代码 3.1服务器代码 3.2客户端代码 4.问题总结 1.项目描述 基于Soket聊天服务器&#xff0c;实现服务器和客户端的文件传输。…

机器学习——线性回归/岭回归/Lasso回归

0、前言&#xff1a; 线性回归会用到python第三方库&#xff1a;sklearn.linear_model中的LinearRegression导入第三方库的方法&#xff1a;from sklearn.linear_model import LinearRegression使用LinearRegression(二维数据&#xff0c;一维数据)进行预测&#xff0c;其中数…

YOLOv5,v8中文标签显示问题

本人使用的是YOLOv5-7.0&#xff0c;YOLOv8的最新版本 1. 训练YOLOv5时matplotlib无法显示中文标签 数据集中的标签是中文&#xff0c;在训练YOLOv5&#xff0c;v8算法时&#xff0c;matplotlib库无法显示中文 2 解决方法 在yolov5/utils/plots.py文件中手动添加黑体字体&a…

flutter Could not get unknown property ‘ndkVersion’

使用的 flutter 版本为 3.7.2 &#xff0c;编译运行 如下 Could not get unknown property ‘ndkVersion’ for object of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension 解决方法是 在flutter-3.7.2\packages\flutter_tools\gradle\flutter.gradle配置…