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没有身份验证
可以直接打
单纯的命令注入
突然看到有命令执行!
攻击队上班了?
乐,复现题目被态势感知记录了