羊城杯 2021 web go

比赛做不动,靠着赛后复现来学习一下。师傅们tql
在这里插入图片描述
一上来就是一个简单的登录页面,题目附件给了源码,打开看看
在这里插入图片描述
在这里插入图片描述
传入的uname通过text转换为str,一开始我以为是text转换为str的这里可能存在漏洞,上网一搜也没有发现。golang弱比较特性还是比较少,这个方法后面也直接被我排除了,找了好久,哭了。。。

既然这个绕过admin不行,就直接想到修改cookie值来进行身份验证。

在这里插入图片描述
全局搜索一下,发现cookie生成代码
在这里插入图片描述
这里可以加入一下代码验证一下
在这里插入图片描述但是cookie并没有被解密出来,返还上层发现
在这里插入图片描述这里将cookie进行decode,加入代码过后可以看见cookie内容
在这里插入图片描述
类型是field Values map[interface{}]interface{} of Session type

将cookie的格式一一对应填入进去,将uname改为admin
在这里插入图片描述

在这里插入图片描述
得到了伪造的cookie,然后填入到服务器端的cookie中修改flag值即可
在这里插入图片描述
应为我是本地复现,所以后续内容就没有做了

后面大概的步骤就是用golang的一个uint32+uint32的整数溢出将flag的值慢慢变小即可。
Uint32的范围是:[0 : 4294967295]

整体下来还是看出来许多不足之处,没有很好地去更进分析代码,前面知道的伪造cookie的大概方向,后面没有找到cookie这个生成的函数,也是自己代码阅读经验少的原因。

参考
https://yyz9.cn/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值