后台寻找方法,该后台大部分admin+三位数字,所以可以采用爆破的方式获取后台地址 该后台地址为admin371
在 admin371/login.php 19行可以看出get_cookie('adminname')不为空就可以绕过,如何获得get_cookie('adminname')的值
在24行可以看出如果存在密码的话会返回cookie中adminpass值,根据返回的adminpass的形式可以推断出adminname的值
可以看到adminpass为zzz920_adminpass,所以推断adminname为zzz920_adminname
可以看到已经在无验证码的情况下已经登录成功了
在inc/zzz_main.php中582行可以看到从SESSION中取code的值,在inc/imgcode.php中只要不刷新就不会重新生成code,导致验证码不过期
http://127.0.0.1/plugins/template/login.php?backurl=1%20onmouseover%3dalert(9516)%20y%3d 该onmouseover事件在移动到登录注册时会触发
对传入的backurl并没有做任何防护
首先来看防护规则,不允许出现./
看 safe_path 只能是upload template runtime路径下的
所以构造/runtime/..\config/zzz_config.php 即可绕过防护
(参考文档: https://blog.dyboy.cn/websecurity/162.html)
首先来看restore函数,mysql数据库,发现path是可控的,看955行,跟进到load_file函数
在zzz_file.php文件中,如果存在该path,则通过file_get_contents读取
然后现在的想法是如何输入出来,跟进到db_exec()函数
在zzz_db.php中,看str_log把sql语句写入到了log中
在zzz.file.php中,跟进到str_log文件,看到文件的命名规则,
文件命名规则为当天时间的时间戳+数据库用户+数据库密码,并且是未授权访问