Iris CTF 2025
· 阅读需 32 分钟
2025开年第一赛。这个比赛我的评价是还不错,有新手向题目有高手向,总的来说代码阅读量偏大。network和radio单独从misc/forensics分出来倒是比较少见(可惜这些部分要学的话需要花不少时间,我就没有去弄了)。OSINT还是,呃呃,不会做,看着大家把这些都杀到50分我也是无话可说。
对了,这次比赛我也第一次尝试了deepseek v3的深度思考(作为o1的平替),发现帮我理清思路,提升注意力方面确实有一定优势,只是不能完全依赖。
web - Password Manager ⭐
一个go语言写成的Web密码管理器。
通过阅读源码,可以知道密码保存在本地3306的mysql数据库中,应用启动时使用./users.json
初始化主用户密码。已知密码管理器的运作原理就是,验证主密码之后,就可以获取其他的密码。
pages
函数是一个自己实现的处理路由的模块。所有页面设计上在./pages
目录下,并试图防止路径穿越:
var PathReplacer = strings.NewReplacer(
"../", "",
)
func pages(w http.ResponseWriter, r *http.Request) {
// You. Shall. Not. Path traverse!
path := PathReplacer.Replace(r.URL.Path)
if path == "/" {
homepage(w, r)
return
}
if path == "/login" {
login(w, r)
return
}
if path == "/getpasswords" {
getpasswords(w, r)
return
}
fullPath := "./pages" + path
if _, err := os.Stat(fullPath); os.IsNotExist(err) {
notfound(w, r)
return
}
http.ServeFile(w, r, fullPath)
}