seacms<=9.92前台getshell
漏洞原理
mysql语句执行错误,fwrite函数写入报错数据至php文件中.
参考链接:https://xz.aliyun.com/t/6191
变量注册
将传入的全局数组GET、POST、COOKIE循环遍历置为变量
漏洞分析
/comment/api/index.php第18行进入ReadData函数,将定义的全局变量$rlist经implode字符操作赋值为$x
跟进Readmlst
函数,会对$rlist
进行危险字符过滤,调用str_ireplace过滤,可以使用双写绕过。
跟进Readlist函数, sql执行语句$ids使用小括号包裹,并没有使用引号
Excute函数执行sql语句,sql.clsss.php第256行,如果sql执行出错,会执行DisplayError.传入参数为$this->queryString带有sql语句.
DisplayError将$msg参数写入文件,php文件格式
复现
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!