首页 > 其他分享 >NSSCTF Web 题解 Write up

NSSCTF Web 题解 Write up

时间:2024-08-03 15:38:56浏览次数:11  
标签:Web 题解 Write flag file text php data filter

NSSCTF Web 题解 Write up

一、Do_you_know_http

1、开题

image-20240708132823258

2、分析

页面显示请使用“WLLM”浏览器,我没听说过“WLLM”浏览器,那首先去User-Agent修改访问的浏览器。

用HackBar分析,将UA的值改成WLLM。

image-20240708134938478

用EXECUTE请求

image-20240708135009936

页面显示你只可以在本地正常阅读,并给出了ip。那简单,还是用HackBar,在当前页面下添加XFF的值为本地即127.0.0.1

image-20240708135443989

显示页面给出flag

相关知识点:

1、HTTP请求头:
X-Forwarded-For 用于表示经过代理服务器或负载均衡器的 HTTP 流量的原始 IP 地址。当 HTTP 请求经过 多个代理服务器 或 负载均衡器 时,X-Forwarded-For 的值可能包含 多个用逗号隔开的 IP 地址,而第一个 IP 地址通常就是 源客户端的 IP 地址。4

User-Agent
HTTP 请求报文中的 User-Agent 请求头是一个用来 标识发送请求的客户端(通常是浏览器或其他网络应用程序)的字符串。这个字符串通常包含了客户端的应用程序名称、版本号、操作系统信息和一些其他相关的信息,用来 帮助服务器识别请求的来源。User-Agent 请求头的 主要目的 是为了让服务器能够根据客户端的不同特性来适配响应内容,以提供更好的用户体验。

二、[ZJCTF 2019]NiZhuanSiWei

1、开题

image-20240723110336274

2、分析

开幕就是依托php代码,大概看一下,需要通过GET方法传入text,file和password,其中text要求强等于“welcome to the zjctf”,那我们可以用data伪协议传入text。构造payload:node4.anna.nssctf.cn:28370?text=data://text/plain,welcome to the zjctf

回显:

image-20240723111040885

接下来看第二层绕过,可以看到flag.php被ban掉了,根据提示useless.php我们可以用filter伪协议读取源文件,构造payload如下:node4.anna.nssctf.cn:28370?text=data://text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

回显:

image-20240723111438850

一串看不懂的字符,丢进赛博厨子解码看看

image-20240723111526079

得出一串php代码:

`<?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");`
        `}  
    }  
}  
?>`  

在本地进行序列化操作:

<?php  

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

输出为O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

构造payload为node4.anna.nssctf.cn:28370?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

回显:

image-20240723111939996

ctrl+U查看源码找到flag:

image-20240723112014554

相关知识点:

1、data:// 数据

data://伪协议是数据流封装器,传递相应格式的数据。

通常可以用来执行PHP代码和传输被过滤字符。

用法:

data://text/plain,test
data://text/plain;base64,dGVzdA==

2、php:// 访问各个输入/输出流

php://伪协议作用是访问各个输入输出流

在CTF中经常用到的是php://filterphp://input

php://filter用来读取源码(.php文件的源码);php://input用来执行php代码(通常以post形式,post一段php代码上去执行[注:allow_url_include要为On])

用法:

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

三、

标签:Web,题解,Write,flag,file,text,php,data,filter
From: https://www.cnblogs.com/fhrq/p/18340593

相关文章

  • 常用的数据集WebVision介绍和pytorch下的简单使用
    WebVision数据集介绍官方下载地址WebVision数据集常用于开集/闭集噪声学习、长尾噪声学习方法在真实数据集上的评估。根据[2]的统计,干净样本占70%,OOD噪声占25%,ID噪声占5%。由于数据集本身较大,论文中使用的都是其中很小的一部分,进入下载页面,选择《WebVisionDataset1.0》《Resi......
  • 得物web端逆向 补环境(第二部分补充已出)
    ​声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wxa15018601872       本文章未经许可禁止转载,禁止任何修改后二次传播,......
  • 携程旅行web逆向
    ​声明:本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wxa15018601872       本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲......
  • AGC013B 题解
    注意到只要随便dfs,如果没有可以走的点,说明这个端点满足要求。因为有两个端点,所以从同一个点开始搜两次,拼在一起就行了。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=1e5+5;vector<int>e[N];intn,m;boolvis[N];voiddfs(in......
  • AGC009B 题解
    注意到如果把每一对胜者败者连边,可以得到一颗树:(例子)但是因为胜者每次只能和一个败者打,所以要用类似多叉转二叉的方法,让有不止一个孩子的节点变成有一个孩子和一个虚点。如图,原来\(1\)有三个儿子\(2,3,4\),通过转换,变成了上图。上图可以直接变成对战图(\(x2\tox1\to1)\):(原......
  • AGC049A 题解
    弱化版:CF280CGameonTree(有向图的限制变成一棵根节点为1的外向树)弱化版解法:根据期望线性性,\(Ans=\sum_{i=1}^nE(p_i)\)。其中\(p_i\)是\(i\)被选到的概率。因为对于\(i\)和\(i\)的祖先节点,某个点在这些店里是第一个备选的概率相同。所以\(p_i=\dfrac{1}{dep_i}\)......
  • joisc2017 D3T1 长途巴士 题解
    joisc2017D3T1长途巴士题解这是学校ACM欢乐赛的题,赛时想到做法了,但是因为我各种唐诗没写出来翻了转化题面我们发现,只可以踢掉检查站前面一个连续段的接水人,并且不能踢掉司机,考虑画出对整个路程表示的线段上图几个小点是检查点,考虑在每个检查点之前踢掉一段的人,容易发......
  • ABC269F 题解
    注意到第\(i\)行和第\(i+2\)行被删除的格子的排列顺序相同,格子上的数差了\(2m\)。于是处理出第\(i,i+1\)行的答案\(a_i,a_{i+1}\),有值的格子的个数\(c_i,c_{i+1}\)。令\(s(i)=\dfrac{(i-1)i}2\),也就是\(\sum_{j=1}^{i-1}j\)。第\(i,i+2,i+4\cdots\)行的和:\(a_i\t......
  • ABC268F 题解
    考虑贪心。设字符串\(S\)里数字之和为\(S_d\),X的个数为\(S_c\)。考虑相邻的两个字符串\(A,B\)的贡献:考虑临项交换,这只影响到相邻两个串的相互贡献。注意到交换\(A,B\)只会影响到\(B_dA_c,A_dB_c\),那么产生的贡献\(\Delta=B_dA_c-A_dB_c\)。因为对于最优解,\(\Delta......
  • ACM第三次测试部分题解(B,C,D,E,J)
    (B)N^N(简单快速幂模板,直接套用就行)点击查看代码#include<iostream>usingnamespacestd;longlonga,b,n;intmain(){cin>>n;while(n--){scanf("%lld",&a);signedlonglongA=a%10,sum=1;while(a)......