PHP代码审计练习二
1、安装解压安装文件可以上传webshell并getshell
这段代码上传就解压,只判断是不是zip文件,所以直接把webshell打在zip包里既可以上传了。
可以看到todir是支持自定义的。所以知道webshell上传的目录,那么就可以getshell了。
2、任意文件删除
看有删除安装包的功能
进行代码跟踪
对传进来的文件名不做处理,直接删除,然后把安装文件anzhuang.php重写,失效
所以我们这次把安装包文件名修改为index.php文件看看删除是否成功
测试发现index.php文件成功被删除。
3、目录遍历漏洞
可以直接访问数据内容直接获取到重要信息
4、管理员密码找回漏洞
首先看到它判断邮箱是否存在用strstr()函数来判断,这个函数只要我们输入的参数在$arr[1],中即可。所以邮箱直接输入一个@就可以了。
然后再审计一下,发送邮箱用的密码是由rtrim(substr($arr[0],15))函数生成,我们进入file.php查看$arr[0]
其实就是用户名
所以密码找回直接我们直接输入 admin admin就可以直接登录成功。
5、添加头像插入连接可以xss
有个添加连接的地址,源码跟踪
只判断连接的结尾为reg中的任意一个
然后就调用add_infile来添加头像
继续跟踪add_infile方法。
传入的link会和img标签做拼接
所以直接构造playload #\" onerror=alert(/xss/)>.jpg 可以直接弹窗