首页
社区
课程
招聘
[2021SCTF]web-Loginme wp
发表于: 2021-12-28 15:07 24224

[2021SCTF]web-Loginme wp

2021-12-28 15:07
24224

最近也是刚刚放假,比较忙,就看了看这个SCTF

比赛快到尾声的时候才抽出空来看看题

按照惯例,肯定是要看看分最少的题

这道题被我看中了,我打算研究一下这个题

附件是一份源码,而且是go语言的源码

我们来看一看

题中源码给了middleware.go

此时我们应该理解一下go语言的中间件是起到什么作用的

所以我们先来看看middleware.go定义了什么

这里导入了一个包github.com/gin-gonic/gin

我们来看一下该包的描述

到这里其实就有那么一点能感觉到这个题的做法了

接着往下看

这里就是简单的获取数据头的函数

其中

这里定义到如果存在x-forwarded-for或者x-client-ip就会返回403

但是还需要ip == "127.0.0.1"

百度一下就知道x-real-ip这个头

中间件看完了,接着往下看route.go

这里就能看到端倪了

go语言模板渲染支持传入一个结构体的实例来渲染它的字段,就有可能造成信息泄露

而在route.go中恰巧传入了一个结构体,我们接着看structs.go

到这里已经真相大白了

 
 
 
 
 
 
 
 
有时候在执行实际Handler里面的逻辑的时候想要预处理或者后处理一些行为(比如写入log、统计执行时间等等);有时候我们想要在调用一个Handler之前或之后调用另一个Handler。这时我们就需要用到中间件这个中间处理函数,把我们实际使用的Handler放在中间件里面,以实现额外的功能。
有时候在执行实际Handler里面的逻辑的时候想要预处理或者后处理一些行为(比如写入log、统计执行时间等等);有时候我们想要在调用一个Handler之前或之后调用另一个Handler。这时我们就需要用到中间件这个中间处理函数,把我们实际使用的Handler放在中间件里面,以实现额外的功能。
package middleware
import (
    "github.com/gin-gonic/gin"
)
func LocalRequired() gin.HandlerFunc {
    return func(c *gin.Context) {
        if c.GetHeader("x-forwarded-for") != "" || c.GetHeader("x-client-ip") != "" {
            c.AbortWithStatus(403)
            return
        }
        ip := c.ClientIP()
        if ip == "127.0.0.1" {
            c.Next()
        } else {
            c.AbortWithStatus(401)
        }
    }
}
package middleware
import (
    "github.com/gin-gonic/gin"
)
func LocalRequired() gin.HandlerFunc {
    return func(c *gin.Context) {
        if c.GetHeader("x-forwarded-for") != "" || c.GetHeader("x-client-ip") != "" {
            c.AbortWithStatus(403)
            return
        }
        ip := c.ClientIP()
        if ip == "127.0.0.1" {
            c.Next()

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2022-1-4 08:29 被H3h3QAQ编辑 ,原因: 添加题目源码
上传的附件:
收藏
免费 2
支持
分享
最新回复 (3)
雪    币: 42927
活跃值: (65707)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
附件能上传一份?
2021-12-31 18:05
0
雪    币: 7713
活跃值: (5206)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
a42K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0L8r3!0#2k6q4)9J5k6e0p5^5z5g2)9J5k6h3y4F1i4K6u0r3N6$3g2T1i4K6u0r3M7$3S2S2M7X3g2Q4x3@1k6U0L8$3c8W2i4K6y4p5g2Y4k6#2g2h3k6#2g2e0y4E0b7e0y4S2i4@1g2r3i4@1u0o6i4K6R3^5i4@1f1^5i4@1q4q4i4@1u0r3i4@1f1&6i4K6V1%4i4@1q4q4i4@1f1%4i4@1p5H3i4K6R3I4i4@1g2r3i4@1u0o6i4K6W2m8L8o6k6J5z5g2!0q4c8W2!0n7b7#2)9^5z5b7`.`.
Loginme的附件
2022-1-1 15:02
0
雪    币: 14
活跃值: (4394)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
4
Editor 附件能上传一份?

马上添加附件

最后于 2022-1-4 08:25 被H3h3QAQ编辑 ,原因:
2022-1-4 08:24
0
游客
登录 | 注册 方可回帖
返回