网上说的都是任意用户密码重置,但是真的是任意用户吗?
我们来看下网上给的poc:
http://127.0.0.1/dedecms/member/resetpassword.php?dopost=safequestion&safequestion=0.0&safeanswer=&id=1
根据给出的分析我们也跟进下。
代码:
这里我们赋值safequestion=0.0,为什么?因为如果用户没设置安全问题的话,在数据库中的值为0
如果我们我们设置为0的话,empty(0)就会为true,为true以后后面的$safequestion就会被赋值为空,但是"" == "0"是为false的,所以就没法重置密码。
而且也不能给safequestion=abc这种,虽然"abc" == 0是为true的,但是safequestion在数据库中是字符串,所以"abc" = "0"是false的。
而设置safequestion=0.0,"0.0" == "0"是为true的。
所以根据以上分析,首先要保证当前重置的用户是没有设置安全问题的。
感谢hanfengb的解疑。
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论