验证encrypt_key.
这个会上首页吗。。 好紧张。。
首先说一下 官方的demo站竟然还没打补丁。
我进去的时候已经看见里面有几个马儿了。。 打下补丁 清下马儿把。
来看看0604出的补丁修改了哪里。
在plugins/phpdisk_client/client_sub.php
在这里上传的时候验证了
如果不相等则退出. $uid倒还容易搞 来看看$settings[encrypt_key]
我擦 这么复杂?
再来看看是如何生成这个的。
这么多字符中随机取12个。 我擦 放弃逆这个了。
在plugins/phpdisk_client/client_sub.php中
parse_str(pd_encode(base64_decode($u_info),'DECODE'));
这里调用了自定义的pd_encode 来解密
如果可以逆到key 就可以自己通过key来生成一个加密的 然后解密之后就可以变量覆盖。
调用了那12位的key。。 对算法不懂 放弃了。。
那就找找有没有哪里调用这函数来进行加密的。
如果要加密的可控的话也行
。
那就来找找在哪里调用了这函数来进行加密了的。
在plugins/phpdisk_client/client_main.php中
验证了user agent 可以修改一下就行了
然后去注册一个号就行了。 再往下面看。
这里调用了pd_encode 不是DECODE 是ENCODE。 看看里面的。
。。可以看到 自己把做验证的带入到了pd_encode里面 然后输出了。。
这特么的太爽了。
首先注册一个号
由于密码他这里没有md5。 所以自己把自己的密码进行md5一次后再放进去。
然后得到加密字符串。
MjdjNWpzd0lOYTFtQTd6R1l1alkxRlhlS2ZiYnc4azV1VFIyNHFXLzluZ1p1K2JFOVdqZlRTbVJXMXZLL0FYb21ScGlVMU5wcU1hSjZXOHYzZXk4MnpOWU1pdk1oV2Zzb0RTQk9tNHdCYWpjeHNUWG9sZUtMK0s5VzlrMUJhNzkrOXgrSVV2dTZrVitscURFZk16djJtM0lsWjV6OUZvSE9JU0lUZw==
然后在client_sub.php中
解密后 就注册了$sign变量。
就通过了这个验证 就能继续上传任意文件了。
sign错误 把刚才的加密字符串复制进去。
上传成功。
嗯。
_________________________________________________________________________
测试一下demo。
成功得到加密字符串。
在测试过程中发现不用这加密的也能上传成功。
看看原因。
原来官方竟然都忘记给自己的demo站打补丁了。
出于人道我给官方把补丁弄上去把。
不过这补丁还得继续修改 因为能像上面那样绕过。