SCTF2021__loginme
文章目录
赛后复现
docker创建容器,打开

提示我们需要localhost,但是我们使用XFF不可以,同时题目也给了附件,是go语言的,不是很会,这两天学了一下,来看下这个题目,复现下
题目给的附件:

打开看了main.go,这个源码是缺了一部分的,但是不影响做题(题目附件中缺了templates,赛后出题人将所有的源码放在了github,复现题目没问题)
之前没碰过go,边学边做吧
本题目用了一个gin框架
Gin是一个使用Go开发的web框架,简洁,性能好,开箱即用,方便扩展。
package main
import (
"html/template"
"loginme/middleware"
"loginme/route"
"loginme/templates"
"github.com/gin-gonic/gin"
)
//Gin是一个使用Go开发的web框架
func main() {
gin.SetMode(gin.ReleaseMode) //选择release模式
r := gin.Default() //创建实例
templ := template.Must(template.New("").ParseFS(templates.Templates, "*.tmpl")) //模板解析
r.SetHTMLTemplate(templ) //该方法会gin实实例绑定一个模板引擎(内部其实是设置了engine的HTMLRender属性),也就是模板渲染
// 通过use设置全局中间件
// 设置日志中间件,主要用于打印请求日志
r.Use(gin.Logger())
// 设置Recovery中间件,主要用于拦截paic错误,不至于导致进程崩掉
r.Use(gin.Recovery())
//一个新的路由
authorized := r.Group("/admin")
//调用函数middleware.LocalRequired(),其实是个waf
authorized.Use(middleware

这篇文章详细解读了SCTF2021登录me竞赛中的一个Go语言项目,涉及gin框架的使用,重点在于理解HTTP请求头限制与绕过技巧,以及如何复现并分析一个带有本地IP验证的登录页面漏洞。
最低0.47元/天 解锁文章
338

被折叠的 条评论
为什么被折叠?



