基于ctfshow初探TP全系列漏洞

研究复现这些thinkphp漏洞就是为了明白漏洞的成因,锻炼看文档手册和调试代码的能力,主要基于ctfshow靶场上的题进行研究(能找到的最全的靶场)。

前言:如何找到需要的版本源码

composer create-project topthink/think-5.0.5 thinkphp5.0.5 --prefer-dist

下载之后访问index,随便访问一个不存在的路由,看报错说的是几,有时候会自动下成最新版,显示5.0.24,这时候只需要在compsoer.json里面改为需要的版本,再运行composer update就行,composer是php的包管理工具,功能和java的maven非常类似

阅读更多

ThinkPHP6.0.3_反序列化漏洞

漏洞影响版本:6.0.0-6.0.3,本次分析中使用的版本为6.0.3

搭建环境就不多说了,composer改版本,index加一个反序列化操作,直接从反序列化链入口开始看。

这条链同样分成上下两部分进行分析

入口部分

前半段的任务在于控制参数使得从__destruct方法到__toString方法,因为后半段和tp5反序列化toString后半段很类似。

我们都知道,反序列化入口一般是__destruct方法,这次是位于/vendor/topthink/think-orm/src/Model.php__destruct方法:

阅读更多

ThinkPHP5_反序列化分析

ThinkPHP5.1 反序列化总结

影响版本:5.1.37-5.1.41

先在index里面加一个反序列化的入口:

由于这个反序列化链实在是太长了,而且需要逆着分析,向上找调用,没法进行调试(调试是顺着分析),所以分成两大部分来分析,第一部分跳跃的类有点多,涉及到了php的多继承和抽象类,第二部分主要集中在Request类中不同方法的互相调用,而连接两个部分的关键在于访问不存在的方法时自动调用的__call方法。

阅读更多

ThinkPHP5_RCE分析

thinkphp5最出名的漏洞就是rce,rce有两个大版本的区别

  1. ThinkPHP 5.0.0-5.0.24
  2. ThinkPHP 5.1.0-5.1.30

因为漏洞具体触发点和版本的不同,导致payload分为了很多种,总体来看依然分两大种:

阅读更多

ThinkPHP3.2.3SQL注入复现

前言

最近这段时间集中在研究ThinkPHP全系漏洞,争取都复现一下,提升一下代码审计能力。

准备工作

先在本地搭建环境研究研究,首先研究sql注入肯定要先自己弄好数据库,这个thinkphp创建时绑定的数据库是空的,于是创个users表,输点数据。

阅读更多