本文已参与「新人创作礼」活动,一起开启掘金创作之路。
对于Grafana反代400绕过
利用payload /public/plugins/alertlist/#/../..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f/etc/hosts
通过这样可以读取etc下的hosts文件
然后也可以读取/etc/passwd
对于一个利用提升的:/etc/grafana/grafana.ini 在这个文件配置里
遇到一个题目,就是通过这个payload读取/etc/passwd。然后通过Grafana-CVE-2021-43798 进行漏洞复现,
在/etc/passwd 读取到一个aes加密
通过解密
GitHub - jas502n/Grafana-CVE-2021-43798: Grafana Unauthorized arbitrary file reading vulnerability
这个项目地址AESDecrypt,是可以对这个进行解密的 然后需要的是kali里下载go环境
然后进行 go run ./AESDecrypt.go命令,进行解密
比赛中一个题,很亏。 可以进行目录穿越,虽然./被preg_match语法替换为空,但是可以双写绕过....// 但是并不知道flag在哪里,于是乎 发愁 。当时想到可以查服务器的配置文件,这个文件中保存有所有服务器中的目录文件。查了很多,但是并没有权限读取。只能读取一个/etc/passwd 知道flag应该在/home/ctf目录下面,但是flag在哪个文件名下 不知道怎么查询
比赛结束,还是三月师傅说的,当前目录下 有一个.bash_history 目录,是可以读取当前目录的信息的 哎 小知识点 记录一下
然后就是JAVA的学习
对于PHP和java的反序列化,说的都是反射,对象可以通过反射获取他的类,类可以通过反射拿到所有方法,拿到的方法可以调用
对于下面这一段代码
public void execute(String className, String methodName) throws Exception {
class clazz = class.forName(className);
clazz.getMethod(methodName).invoke(class.newInstance());
}
这里有java反射的重要的几个函数:
获取类的方法:forname
实例化类对象的方法:newInstance
获取函数的方法:getMethod
执行函数的方法:invoke
获取类的三种方法:
obj.getClass() 如果上下⽂中存在某个类的实例 obj ,那么我们可以直接通过 obj.getClass() 来获取它的类
Test.class 如果你已经加载了某个类,只是想获取到它的 java.lang.Class 对象,那么就直接 拿它的 class 属性即可。这个⽅法其实不属于反射。
Class.forName 如果你知道某个类的名字,想获取到这个类,就可以使⽤ forName 来获取
forname两个函数重载
Class forName(String name) Class forName(String name, **boolean** initialize, ClassLoader loader)
Class.forName(className) = Class.forname(className,true,currentLoader)