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 协议 ,转载请注明出处!