SCTF2021__loginme

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

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值