当前位置: 首页 > news >正文

NSSCTF-Web题目11

目录

[鹤城杯 2021]EasyP

1、题目

2、知识点

3、思路

[SWPUCTF 2022 新生赛]numgame

1、题目

2、知识点

3、思路


[鹤城杯 2021]EasyP

1、题目

2、知识点

php代码审计

3、思路

打开题目,出现一段代码,我们对代码进行审计

这里出现了很多不懂的函数,下面进行解释

$_SERVER()是一个包含了文件头、路径等信息的数组

例如url:http://127.0.0.1/dir/test.php?id=1

$_SERVER['PHP_SELF']:获取当前执行url的文件

执行结果:/dir/test.php

$_SERVER['REQUEST_URI']:获取当前执行url的文件还有参数

执行结果:/dir/test.php?id=1

basename()函数:

简而言之就是取url中最后一个文件

例如上面的例子,执行结果:/test.php

basename 函数有这样一个特性:在使用默认语言环境设置时,basename() 会删除文件名开头的非 ASCII 字符。

了解了这些函数,接下来就审计一下代码

1、

if (isset($_POST['guess'])) {
    $guess = (string) $_POST['guess'];
    if ($guess === $secret) {
        $message = 'Congratulations! The flag is: ' . $flag;
    } else {
        $message = 'Wrong. Try Again';
    }
}

这一段代码就是通过POST方式上传guess变量,且跟secret变量的值强比较,但是secret变量的值我们不知道,所以这一个也没法突破

2、

if (preg_match('/utils\.php\/*$/i', $_SERVER['PHP_SELF'])) {
    exit("hacker :)");
}

if (preg_match('/show_source/', $_SERVER['REQUEST_URI'])){
    exit("hacker :)");

对上传的url进行正则比较,不能有utils.php、show_source,/i的作用是大小写都可以

3、

if (isset($_GET['show_source'])) {
    highlight_file(basename($_SERVER['PHP_SELF']));
    exit();

上传一个show_source变量

PHP参数解析特性

PHP会自动将参数转换为有效的变量名:
1.删除空白符
2.将特殊字符[+ .转化成下划线_

利用这个特性,就可以绕过对show_source的过滤

所以我们构造payload:

http://node4.anna.nssctf.cn:28798/index.php/utils.php/哈哈?show[source=1

basename(http://node4.anna.nssctf.cn:28798/index.php/utils.php/哈哈?show[source=1)

结果为:/哈哈

这样就绕过了对utils\.php的检测

?show[source=1 执行结果为:show_source=1

注:这里需要加上index.php,这里不懂为什么需要加上index,可能是题目的设计

得到flag:NSSCTF{3f08c921-26a9-459f-b947-8a0254cbdfdb}


[SWPUCTF 2022 新生赛]numgame

1、题目

2、知识点

php代码审计

3、思路

打开题目

根据题目提示,发现到不了题目结果,右键打不开源码,用开发者模式打开会自动关闭网页

先打开开发者模式中的控制台,再访问url就可以看到源码

得到源码

翻看源码

发现NSSCTF{TnNTY1RmLnBocA==},以为是flag,结果不是,看着像base64编码,进行解码

Base64解码 Base64编码 UTF8 GB2312 UTF16 GBK 二进制 十六进制 解密 - The X 在线工具 (the-x.cn)

解码得到:NsScTf.php

访问这个页面,得到源代码

审计代码:

需要我们用get上传一个p参数,然后调用call_user_func()

call_user_func()

上面定义了一个nss类,类中有一个ctf函数,意思就是p参数的值就是ctf函数,然后

call_user_func(ctf)执行这个ctf函数

那么怎么使用类中的函数呢,php中使用双冒号::

在php中双冒号(::)操作符是一种范围解析操作符,又作用域限定操作符。它是对类中的方法的静态引用,可以访问静态、const和类中重写的属性与方法

if (preg_match("/n|c/m",$_GET['p'], $matches))

源代码中还对n和c进行了过滤,但是发现没有对大小写进行检测,所以我们可以大写来绕过检测

构造payload:

/NsScTf.php/?p=NSS2::Ctf

没有回显内容,右键查看源码

得到flag:NSSCTF{061771ca-0a8e-443f-8e5d-9782103ab52e}


这篇文章就先写到这里,哪里不足的或者哪里不懂的欢迎指正

相关文章:

NSSCTF-Web题目11

目录 [鹤城杯 2021]EasyP 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]numgame 1、题目 2、知识点 3、思路 [鹤城杯 2021]EasyP 1、题目 2、知识点 php代码审计 3、思路 打开题目,出现一段代码,我们对代码进行审计 这里出现了很多不懂的…...

【数据结构】第十八弹---C语言实现堆排序

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、堆排序 1.1、基本思想 1.2、初步代码实现 1.3、代码优化 1.4、代码测试 总结 1、堆排序 在博主数据结构第十二弹---堆的应用有详细讲解堆…...

[面试题]Kafka

[面试题]Java【基础】[面试题]Java【虚拟机】[面试题]Java【并发】[面试题]Java【集合】[面试题]MySQL[面试题]Maven[面试题]Spring Boot[面试题]Spring Cloud[面试题]Spring MVC[面试题]Spring[面试题]MyBatis[面试题]Nginx[面试题]缓存[面试题]Redis[面试题]消息队列[面试题]…...

centos7 离线安装zip和unzip

解压的时候发现不能解压,报-bash: unzip: command not found 1、访问https://www.rpmfind.net/linux/rpm2html/search.php?queryzip&submitSearch…&systemcentos&arch#/ 2、输入zip和centos搜索,选择el7下载 3、输入unzip和centos搜索&am…...

Linux下lsof命令使用

目录 lsof 命令使用指南基本语法常用选项使用示例 lsof vs netstatlsofnetstat区别示例对比 lsof 命令使用指南 lsof (List Open Files) 是一个用于列出当前系统中打开文件的命令,适用于 Unix 和类 Unix 操作系统。它不仅可以列出常规文件,还可以列出打…...

基于ChatGPT的大型语言模型试用心得

近年来,ChatGPT这样的大型语言模型,它如同一颗冉冉升起的新星,迅速在商业、教育、娱乐等多个领域照亮了创新的天空,极大地革新了我们的工作与日常生活。 最近我发现一些国内用户也能自由访问的中文ChatGPT APP。这个平台不仅提供…...

Python 列表添加多个值(四种方法)

Python 列表添加多个值有多种方法,以下是其中几种实现方法: 一、使用extend()方法 Python 中列表对象有一个 extend() 方法,它可以一次性添加另一个列表中的所有元素到当前列表中。 例1: a = [1, 2, 3] b = [4, 5, 6] a.extend(b)...

VMware RedHat虚拟机磁盘扩容(添加磁盘和扩展磁盘)

前言 自己的电脑上配一个虚拟机还是很有必要的,用起来比双系统方便一点,之前搞了100g的ubuntu没用到,后面重装redhat觉得随便搞个20g就够用了,后面用到之后就遇到磁盘不够用的情况,只能说情况允许的话,磁盘…...

最近,GPT-4o横空出世。对GPT-4o这一人工智能技术进行评价,包括版本间的对比分析、GPT-4o的技术能力以及个人整体感受等

GPT-4o是一款引人瞩目的人工智能技术,它在之前版本的基础上取得了长足的进步。本文将对GPT-4o进行评价,包括版本间的对比分析、GPT-4o的技术能力以及个人整体感受等。 首先,我们来进行GPT-4o与之前版本的对比分析。GPT-4o相较于GPT-3和GPT-2…...

C#面:C#支持多重继承么?

C#不支持多重继承。在C#中,一个类只能直接继承自一个基类。这是由于C#的设计目标之一是避免多重继承可能带来的复杂性和潜在的问题。 然而,C#提供了接口(interface)的概念来实现类似多重继承的功能。一个类可以实现多个接口&…...

细说MCU修改回调函数调用模式的方法

目录 1、硬件及工程 2、实现方法 (1)修改while(1)中的代码: (2)修改2 (3)修改3 (4)修改4 (5)修改5 3、下载并运行 在本文作者的文章中&a…...

Java共享台球室无人系统支持微信小程序+微信公众号

共享台球室无人系统 🎱 创新台球体验 近年来,共享经济如火如荼,从共享单车到共享汽车,无一不改变着我们的生活方式。而如今,这一模式已经渗透到了更多领域,共享台球室便是其中之一。不同于传统的台球室&a…...

如何开发一个海外仓系统?难度在哪,怎么选择高性价解决方案

作为海外仓管理的重要工具,海外仓系统的实际应用价值还是非常高的。为了让大家能更好的理解wms海外仓系统,今天会介绍海外仓系统开发的逻辑架构,以及作为海外仓企业要怎么确定高性价比的数字化管理解决方案。 1、开发海外仓系统要考虑的功能…...

计算机组成原理(Wrong Question)

目录 一、计算机系统概述 *1.1 计算机发展历程 1.2 计算机系统层次结构 1.3 计算机的性能指标 二、 数据的表示和运算 2.1 数制和编码 2.2 运算方法和运算电路 2.3 浮点数的表示与运算 三、存储系统 3.1 存储器概述 3.2 主存储器 3.3 主存储器与CPU的连接 3.4 外部…...

ACL2024 | AI的时空穿越记:大型语言模型共时推理的奇幻之旅!

作者:苏肇辰 标题:Living in the Moment: Can Large Language Models Grasp Co-Temporal Reasoning? 录取:ACL2024 Main 论文链接:https://arxiv.org/abs/2406.09072 代码链接:https://github.com/zhaochen0110/Cotem…...

从xxl-job源码中学习Netty的使用

1. 启动与Spring实例化 com.xxl.job.core.executor.impl.XxlJobSpringExecutor.java类 继承SmartInitializingSingleton 类,在afterSingletonsInstantiated 实例化后方法中 调用initJobHandlerMethodRepository 把所有的xxljob任务管理起来; private…...

人工智能发展历程了解和Tensorflow基础开发环境构建

目录 人工智能的三次浪潮 开发环境介绍 Anaconda Anaconda的下载和安装 下载说明 安装指导 模块介绍 使用Anaconda Navigator Home界面介绍 Environment界面介绍 使用Jupter Notebook 打开Jupter Notebook 配置默认目录 新建文件 两种输入模式 Conda 虚拟环境 添…...

makefile追加warning日志

在Makefile中,你不能直接“追加”warning日志到构建过程中,但你可以通过几种方式在构建时产生额外的警告或消息。以下是一些常用的方法: 使用echo或printf命令: 在Makefile的规则中,你可以使用echo或printf命令来输出警…...

不要直接使用unidefined 而使用void 0

为什么不要使用unidefined 而使用void 0? 在JavaScript中,undefined 和 void 0 都可以用来表示未定义的值,但它们在使用和上下文中有一些微妙的差异,这也是为什么有时可能会推荐使用 void 0 而不是直接使用 undefined。 全局污染&#xff…...

注解详解系列 - @Scope:Bean作用域管理

注解简介 在今天的注解详解系列中,我们将探讨Scope注解。Scope是Spring框架中的一个重要注解,用于定义Spring bean的作用域。通过指定bean的作用域,我们可以控制bean的生命周期和创建方式。 注解定义 Scope注解用于指定Spring bean的作用域…...

数学建模基础:数学建模概述

目录 前言 一、数学建模的步骤 二、模型的分类 三、模型评价指标 四、常见的数学建模方法 实际案例:线性回归建模 步骤 1:导入数据 步骤 2:数据预处理 步骤 3:建立线性回归模型 步骤 4:模型验证 步骤 5&…...

人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)

开源大语言模型完整列表 Large Language Model (LLM) 即大规模语言模型,是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。 所谓"语言模型",就是只用来处理语言文…...

数据结构之B树

引言 在计算机科学中,数据结构是用于组织和存储数据的关键工具。其中,B树(B-tree)作为一种自平衡的树形数据结构,被广泛应用于数据库和文件系统中,以提高查找、插入、删除和范围查询的效率。本文将深入探讨…...

双色球预测算法(Java),——森林机器学习、时间序列

最近AI很火,老想着利用AI的什么算法,干点什么有意义的事情。其中之一便想到了双色球,然后让AI给我预测,结果基本都是简单使用随机算法列出了几个数字。 额,,,,咋说呢,双…...

【计算机网络篇】数据链路层(11)在数据链路层扩展以太网

文章目录 🍔使用网桥在数据链路层扩展以太网🥚网桥的主要结构和基本工作原理🎈网桥的主要结构🔎网桥转发帧的例子🔎网桥丢弃帧的例子🔎网桥转发广播帧的例子 🥚透明网桥🔎透明网桥的…...

Ubuntu20.04 使用scrapy-splash爬取动态网页

我们要先安装splash服务,使用dock安装,如果dock没有安装,请参考我的上一篇博文: 按照官方文档:https://splash.readthedocs.io/en/stable/install.html 1.下载splash sudo docker pull scrapinghub/splash2.安装scrapy…...

Function:控制继电器上下电,上电后adb登录,copy配置文件

import serial import time import datetime import subprocess import osdef append_to_txt(file_path, content):if os.path.exists(file_path):with open(file_path, a) as file: # 使用 a 模式打开文件进行追加file.write(content \n) # 追加内容,并换行else…...

香港电讯高可用网络助力企业变革金融计算

客户背景 客户是一家金融行业知名的量化私募对冲基金公司,专注于股票、期权、期货、债券等主要投资市场,在量化私募管理深耕多年,目前资管规模已达数百亿级,在国内多个城市均设有办公地点。 客户需求 由于客户业务倚重量化技术…...

LDR6020一拖二快充线:多设备充电新选择

随着科技的快速发展,我们的日常生活中越来越多地依赖于智能设备。然而,每当手机、平板或其他移动设备电量告急时,我们总是需要寻找合适的充电线进行充电。为了解决这一痛点,市场上出现了一款备受瞩目的新产品——LDR6020一拖二快充…...

电脑ffmpeg.dll丢失原因解析,找不到ffmpeg.dll的5种解决方法

在数字化时代,多媒体文件的处理已经成为我们日常生活和工作中不可或缺的一部分。在计算机使用过程中,丢失ffmpeg.dll文件是一个特定但常见的问题,尤其是对于那些经常处理视频编解码任务的用户来说。下面小编讲全面分析ffmpeg.dll丢失原因以及…...

seo推广的作用/seo优化咨询

使用DAX中的某些函数特别类似Calculate这种函数创建计算列时很容易出现一种错误,叫做检测到循环依赖关系,即:A circular dependency was detected。对于刚接触Dax语言的人来说,这个错误看着有点摸不到头脑,整个公式使用…...

用网站建设与管理创业/网络热词英语

模板 要了解jinja2,那么需要先理解模板的概念。模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强、并且更加容易理解和维护。 模板简单来说就是一个其中包涵占位变量表示动态的部分的文件&#xff0c…...

视频网站如何做盗链/千峰培训多少钱

MySQL同步的流程大致如下: 1、主服务器(master)将变更事件(更新、删除、表结构改变等等)写入二进制日志(master log)。 2、从服务器(slave)的IO线程从主服务器(binlog dump线程)获取二进制日志,并在本地保存一份自己的二进制日志(relay log) 3、从服务器的SQL线程…...

wordpress 自媒体模版/海底捞口碑营销案例

网络-udp协议...

电商网站的二级菜单怎么做/软件怎么推广

1.概念通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素&…...

服装网站建设目的/推广普通话绘画

我们前面做了一个这样的页面,为了增加我们的学习难度,我们特意拆分成了不同的组件。 我们知道,我们在子组件里并不能直接对兄弟组件里的属性进行操作,我们通过this.$emit() 调用父组件的方法,通过this.$parent.$data.…...