这里两个方法全都调用了authcode()方法,跟进authcode看一下:
这里decode和encode算法可逆,但我们须要知道$key的值,查看布局函数:
这里$key的值是来源于met_webkeys这个配置,查看met_webkeys来源创造在安装的时候把这个key写入到./config/config_safe.php文件中。

查看/config/config_safe.php文件,这里写入办法类似以下,但p牛在某篇文章中说过,这种是无法解析的,php后面必须要有一个空缺字符,右键查看源代码即可得到met_webkeys,但有的会报错,根据这个表哥所说和php线程安全有关,本地试了下彷佛是这样。
这里有两个利用点,大略说下个中一个。在register类的doemailvild()方法中,这里把用户提交的p参数进行理解密,并且传入到了get_user_valid()方法中。
查看get_user_valid()方法,这里又把解密后的值传入到了get_user_by_username()方法。
查看get_user_by_username()方法,又传入了get_user_by_nameid()方法。
查看get_user_by_nameid()方法,直接拼接。
这里基本就清楚了,将auth类的authcode()方法copy本地。
访问本地文件得到加密后的字符串。
将加密后的字符串放到cookie,get或者post中,布局要求提交,延时注入成功。
payload这里有两个,一个是不须要上岸就可注入,另一个是coolcat表哥所说的须要以会员上岸。以下请自行更换p参数。
1、不须要上岸
GET /admin/index.php?n=user&m=web&c=register&a=doemailvild HTTP/1.1Cookie: p=00c7%2FDBwD23b41olxVCthTvDDTRBhldmrrdyA8S3t%2F3yAl4QZ0P%2FSfOS5zlB
2、 须要上岸
GET /admin/index.php?n=user&m=web&c=profile&a=dosafety_emailadd HTTP/1.1Cookie: p=497cD9UpkDtsvFzU9IKNlPvSyg1z%2bf09cmp8hqUeyJW9ekvPfJqx8cLKFSHr;<自行添加上岸后的cookie>
本文由白帽汇原创,转载请注明来源:https://nosec.org/home/detail/2436.html
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您供应:网络空间测绘、企业资产网络、企业威胁情报、应急相应做事。