Funny_go
2023-07-23 04:20:36
回过头再看一下代码
有用的地方就是 SubmitMoveHandler
直接去 move 打
其他都是废话
gorm 和 gin 框架
5 个路由
1 | router.GET("/user", UserHandler) //用户登录信息 |
首先从代码上两个比较明显的点
1、IpSecurityCheck
1 | func IpSecurityCheck() gin.HandlerFunc { |
2、SubmitMoveHandler
1 | func SubmitMoveHandler(c *gin.Context) { |
很明显的 SSRF 和命令注入
那么再来看下前置步骤
首先是 struct 进行查询时,gorm 只会查询非零字段,若值为 0,false,’' 或其他零值
gorm 会忽略 where 条件
得到 username 和 password
进行登录
--------------------------9a28df6f0f9a180f Content-Disposition: form-data; name=“xx”; filename=“flag” Content-Type: application/octet-stream flag{ki10Moc_W0nt_31eep} --------------------------9a28df6f0f9a180f–
但其实这题代码写的有问题
5 个路由只需要 move 即可
因为 move 没有身份验证
可以直接打
单纯的命令注入
突然看到有命令执行!
攻击队上班了?
乐,复现题目被态势感知记录了