corCTF2022 Web

LoRA 完整解析:从理论到实践 LoRA(低秩适应)是一种高效的大模型微调方法,通过添加少量可训练参数(低秩矩阵)来适配新任务,避免全参数微调的高成本。其核心是将权重更新ΔW分解为两个小矩阵B×A的乘积,大幅减少训练参数量(仅0.1-1%)。LoRA基于内在维度假设,通过低秩约束捕捉核心任务信息,兼具效率与效果。实际应用中,常用配置为秩r=16-32,目标模块选择注意力层的q_proj和v_proj,学习率比全参数微调大10倍(约1e-4)。优势包括参数高效(内存降低60-80%)、多任务适配灵活、保留预训练知识等,已成为大模型微调的主流 阅读详情

corCTF2022

Web

jsonquiz.be.ax

js看源码找接口,修改传入的参数,默认不管你做题得了多少分都是传入0分,所以可以在最后一个选项的时候用burp抓包,然后修改score的值就能拿到flag

image-20220809232729977

image-20220809233306343

msfrog-generator

image-20220809234101500

尝试目录穿越得到报错回显,试了一下,不让读非图片的文件

image-20220809234205987

image-20220809234745397

可以看到使用反引号包裹的,尝试执行多条命令

image-20220809235004844

拿到flag

simplewaf

这是一道nodejs的题,源代码特别简单,就是一个简单的关键词过滤

const express = require("express");
const fs = require("fs");

const app = express();

const PORT = process.env.PORT || 3456;

app.use((req, res, next) => {
    if([req.body, req.headers, req.query].some(
        (item) => item && JSON.stringify(item).includes("flag")
        // 将
    )) {
        return res.send("bad hacker!");
    }
    next();
});

app.get("/", (req, res) => {
    try {
        res.setHeader("Content-Type", "text/html");
        res.send(fs.readFileSync(req.query.file || "index.html").toString());    
        // 传入一个参数file,通过fs.readFileSync函数读取文件,并返回渲染
    }
    catch(err) {
        console.log(err);
        res.status(500).send("Internal server error");
    }
});

app.listen(PORT, () => console.log(`web/simplewaf listening on port ${PORT}`));

image-20220810003301243

允许传入URL对象,URL对象会自动对参数进行url解码,再进行一次浏览器解码,所以可以通过传入url对象进行绕过,但是这里传入的参数是通过req.query.file参数进行解析的,只能允许传入字符串。但是可以通过数组的方式传入对象

分析一下fs.readFileSync函数

function readFileSync(path, options) {
  options = getOptions(options, { flag: 'r' });
  const isUserFd = isFd(path); // File descriptor ownership
  const fd = isUserFd ? path : fs.openSync(path, options.flag, 0o666);
    // 创建一个文件句柄,如果不是文件描述符就调用fs.openSync读取文件
  const stats = tryStatSync(fd, isUserFd);
  const size = isFileType(stats, S_IFREG) ? stats[8] : 0;
  let pos = 0;
  let buffer; // Single buffer with file data
  let buffers; // List for when size is unknown

  if (size === 0) {
    buffers = [];
  } else {
    buffer = tryCreateBuffer(size, fd, isUserFd);
  }

  let bytesRead;

  if (size !== 0) {
    do {
      bytesRead = tryReadSync(fd, isUserFd, buffer, pos, size - pos);
      pos += bytesRead;
    } while (bytesRead !== 0 && pos < size);
  } else {
    do {
      // The kernel lies about many files.
      // Go ahead and try to read some bytes.
      buffer = Buffer.allocUnsafe(8192);
      bytesRead = tryReadSync(fd, isUserFd, buffer, 0, 8192);
      if (bytesRead !== 0) {
        ArrayPrototypePush(buffers, buffer.slice(0, bytesRead));
      }
      pos += bytesRead;
    } while (bytesRead !== 0);
  }

  if (!isUserFd)
    fs.closeSync(fd);

  if (size === 0) {
    // Data was collected into the buffers list.
    buffer = Buffer.concat(buffers, pos);
  } else if (pos < size) {
    buffer = buffer.slice(0, pos);
  }

  if (options.encoding) buffer = buffer.toString(options.encoding);
  return buffer;
}

很显然会调用到fs.openSync(path, options.flag, 0o666)这里去,继续跟进

function openSync(path, flags, mode) {
  path = getValidatedPath(path);
    //检测url,跟进看看
  const flagsNumber = stringToFlags(flags);
  mode = parseFileMode(mode, 'mode', 0o666);

  const ctx = { path };
  const result = binding.open(pathModule.toNamespacedPath(path),
                              flagsNumber, mode,
                              undefined, ctx);
  handleErrorFromBinding(ctx);
  return result;
}

getValidatedPath

function getValidatedPath (fileURLOrPath) {
  const path = fileURLOrPath != null && fileURLOrPath.href && fileURLOrPath.origin
    ? fileURLToPath(fileURLOrPath)
    : fileURLOrPath
  return path
}

这里有个函数fileurltopath,看名字估计是将url对象转换为时间文件地址的功能,继续跟进

const fileURLToPath = (path) => {
  if (typeof path === 'string') {
    path = new URL(path)
  } else if (!isURLInstance(path)) {
    throw new ERR_INVALID_ARG_TYPE('path', ['string', 'URL'], path)
  }

  if (path.protocol !== 'file:') {
    throw new ERR_INVALID_URL_SCHEME('file')
  }
    //令path.protocol属性为file:

  return isWindows
    ? getPathFromURLWin32(path)
    : getPathFromURLPosix(path)
    //进入getPathFromURLPosix
}
const isURLInstance = (input) => {
  return input != null && input.href && input.origin
    //存在href和origin属性就返回真
}

跟进getPathFromURLPosix

const getPathFromURLPosix = (url) => {
  if (url.hostname !== '') {
    throw new ERR_INVALID_FILE_URL_HOST(process.platform)
  }
	//令path.hostname为空
  const pathname = url.pathname

  for (let n = 0; n < pathname.length; n++) {
    if (pathname[n] === '%') {
      const third = pathname.codePointAt(n + 2) | 0x20
      if (pathname[n + 1] === '2' && third === 102) {
        throw new ERR_INVALID_FILE_URL_PATH('must not include encoded / characters')
      }
    }
      //这里对pathname进行解码
  }

到这里就结束了,总结一下

protocol属性为file:

存在href和origin属性

hostname填url编码后的值

image-20220810010600914

本地复现成功

image-20220810010816892

数组传参,转对象,成功拿到flag

参考文章

https://nanimokangaeteinai.hateblo.jp/entry/2022/08/09/022238

maxim max96712+max96717调试笔记 mxxim max96712 和max96717调试笔记 阅读详情

相关推荐

STM32单片机:驱动ADS1115四个通道全开程序

本文介绍了德州仪器(TI)的ADS1115高精度16位模数转换器(ADC)及其应用实现。该芯片具有16位分辨率、可编程增益放大器(PGA)和低功耗特性,支持±0.256V至±6.144V量程。文章提供了完整的C语言驱动代码,包括初始化、配置寄存器读写、单次/连续转换模式设置、电压值读取等功能实现。代码通过I2C接口与ADS1115通信,支持多通道选择和不同PGA设置,可实现高精度模拟信号采集。该方案适用于需要精密测量的嵌入式系统,如传感器数据采集等应用场景。

weixin_42122070的博客 689

[corctf 2022] 部分

corCTF 2022 部分WP

weixin_52640415的博客 1872

数据分析(二):学生成绩预测分析报告

表1 特征变量描述变量描述school学生的学校sex学生的性别age学生的年龄address学生的家庭住址类型famsize家庭规模Pstatus父母同居状况Medu母亲的教育Fedu父亲的教育Mjob母亲的工作Fjob父亲的工作reason选择学校的理由guardian学生监护人traveltime从家到学校的时间studytime每周学习时间failures过去的类失败次数schoolsup额外的教育支持famsup家庭教育支持。

m0_73963149的博客 4417

Arab Security Cyber Wargames 2022 Qualifications && corCTF 部分题解

ASCWQ 2022 && corCTF 2022 部分题解

weixin_51122085的博客 2203

5分钟搞定kkFileView 4.4.0 Docker部署:小白也能上手的完整配置流程

本文提供了一份针对kkFileView 4.4.0版本的Docker部署完整指南。通过使用预构建的Docker镜像,即使是新手也能在5分钟内完成文件预览服务的搭建,涵盖从环境准备、镜像拉取、容器启动到服务验证的全流程,并分享了进阶配置与生产环境优化建议。

mango的博客 528

Simulink单相桥式有源逆变电路仿真:从器件选型到波形分析(MATLAB 2018a实战)

本文基于MATLAB 2018a的Simulink平台,详细演示了单相桥式有源逆变电路的完整仿真流程。从Simscape/Power Systems库的器件选型、参数配置,到触发脉冲设置与电路连接,逐步指导搭建仿真模型。通过调整触发角α,直观展示了电路从整流到有源逆变的工作状态切换,并深入分析了负载电压、电流波形,以及逆变颠覆现象的产生条件与特征。

cake8的博客 1161

[GKCTF2020]web

CheckIN 打开题目得到源码 <title>Check_In</title> <?php highlight_file(__FILE__); class ClassName { public $code = null; public $decode = null; function __construct() { $this->code = @$t

臭nana的博客 1263

YOLO26涨点改进 | 全网独家创新、检测头Head改进篇 | AAAI 2026 | 使用StripConvHead改进YOLO26的检测头,处理小目标、遮挡小目标检测有效涨点,助力高效发论文

🔥本文给大家介绍使用StripConv条形卷积改进 YOLO26的检测头,可以显著提高模型在高纵横比物体检测、目标定位和多尺度物体检测方面的表现。StripConv条形卷积能够更有效地捕捉细长物体的特征,提升定位精度,并通过简化卷积核设计减少计算冗余,优化计算效率。此外,该改进增强了 YOLO26对复杂场景和实时任务的适应能力,特别适用于遥感图像目标检测、小目标检测等领域。具体怎么使用请看全文。摘要:随着遥感物体检测的快速发展,检测高纵横比物体仍然是一个挑战性问题。

Ai缝合怪、助力小伙伴高效发论文 269

CTF-web: fs.readFileSync特殊利用

URL类是 JavaScript 的内置类(或对象),它用于处理和解析 URL(统一资源定位符)。URL是 Web API 的一部分,广泛应用于浏览器环境和 Node.js 中。

weixin_59166557的博客 1015

【人工智能】向量数据库全生命周期数据安全防护体系:破解向量化与检索双环节泄露风险

大模型时代,向量数据库已成为RAG(检索增强生成)架构、语义检索、多模态应用的核心基础设施,解决了大模型幻觉、长上下文窗口限制、私有知识落地等核心痛点。但行业普遍存在认知误区:将Embedding向量等同于“无害的语义压缩乱码”,忽视了向量数据原生的泄露风险。

奶爸的编程之路,也就一周冷个三天 161

Mediatek NeuroPilot Yolov8量化

【代码】Mediatek NeuroPilot Yolov8模型转化。

sdrgtywretyeruet的专栏 347

vue中的uri_【file-uri-to-path】转换文件URI 为文件Path

file-uri-to-pathConvert a file: URI to a file pathAccepts a file: URI and returns a regular file path suitable for use with thefs module functions.InstallationInstall with npm:$ npm install file-uri-t...

weixin_39640203的博客 1271

MIT液态神经网络(LNN)深度研究:原理、应用与未来

液态神经网络(Liquid Neural Networks, LNNs)代表了人工智能领域,特别是神经网络架构设计中的一次范式转移。它从根本上挑战了传统深度学习模型依赖大规模参数和静态架构的惯例,转而寻求一种更为动态、高效且受生物神经系统启发的计算范式。LNN的核心创新在于其将神经网络的计算过程从离散的、基于时间步的更新,转变为连续的、由微分方程驱动的动态系统演化。这种转变不仅赋予了模型前所未有的适应性和鲁棒性,还使其在处理复杂的时序数据和因果推断任务时表现出色。本章节将深入剖析LNN的技术原理,从其核心的

步子哥的博客 2590

vue3 + vite + ts + setup , 第十三练 vue3 开发移动端,开发页面自适应

之前开发移动端常用的rem布局,或使用媒体查询,本文研究一下postcss-px-to-viewport的使用现在有了更好用的vw vhvw 视口的最大宽度,1vw等于视口宽度的百分之一vh 视口的最大高度,1vh等于视口高度的百分之一1、创建vue项目 2、安装postcss-px-to-viewport 依赖 3、因为vite中已经内联了postcss,所以并不需要额外的创建 postcss.config.js文件只需要在vite.config.ts配置postcss即可vite.config.

csl125的博客 2537

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【node】深入探讨 class URL

当谈论现代 Web 开发时,涉及到多种 URL 相关的概念和工具。Node.js 中的 URL 类提供了强大的 URL 解析和操作功能,适用于服务器端和脚本任务。例如,它允许开发者轻松解析和修改 URL 的各个部分,如协议、主机名、路径和查询参数。与此同时,Vite 提供了 fileURLToPath 函数,用于将文件 URL 转换为本地文件路径,便于在开发过程中处理模块和资源。

Vinca@的博客 3081

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Node.js内置模块:fs、path、http

fs模块 /* *fs模块 */ const fs = require('fs');//导入fs模块 // err返回错误信息(成功:null) // datastr是文件里的数据(读取失败:undefined) // utf-8是默认编码形式(可省略) fs.readFile('1.txt', 'utf-8', function (err, dataStr) { if (err !== null) { console.log(err); return; } cons

W2001r的博客 1129

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

vue3代码解读:alias: { ‘@‘: fileURLToPath(new URL(‘./src‘, import.meta.url)) }解释这段代码

这段代码是配置别名(alias)的一个例子,通常用于JavaScript模块打包工具或构建工具中,比如Webpack。别名允许你在模块路径中使用简短的别名而不是完整的路径。使用别名后,你可以在项目中的任何地方通过。来代替冗长的相对路径或绝对路径,使得路径更简洁,也方便维护。目录的完整文件系统路径。这样,开发者在引用模块时可以使用。综合来看,这段代码的作用是设置一个别名。时,它会被替换为当前模块目录下的。例如,如果当前模块的路径是。,而不需要写完整的路径。,当在模块路径中使用。

weixin_48420104的博客 4108

【Exploit trick】针对 cred 结构的 cross cache 利用(corCTF 2022-cache-of-castaways)

特殊cache(漏洞对象大小为512字节)中的6字节堆溢出,可以分配 `50*8` 个漏洞对象。构造 `cross-cache` 溢出,利用漏洞对象篡改相邻的 `cred` 对象。

panhewu9919的博客 1818

node内置模块——Http模块、url模块、querystring小模块、escape/unescape

创建服务器 回调函数一般传递两个参数:监听端口号的内容,即监听对应浏览器页面的内容,行为,监听到了就执行回调函数中的内容 另一种写法: 将创建和处理内容分开写 res 属性——返回结果 res返回渲染的内容注意 : 传递的参数必须是。不能直接传递一个数据,如数组。直接传递数组,前端不能进行解析,但是前端可以解析传递的。eg: 01.server.js 终端启动 浏览器输出: :代表返回的状态码。eg:200代表成功,404代表失败。可以设置输入的编码属性。如果要输入中文要将编码格式设置为 eg:示例

mantou_riji的博客 1156

小满Vue3第四十二章(环境变量)

然后App.vue 输出 JSON.stringify(import.meta.env)我们就可以通过环境变量这个值 做一些事情比如 切花接口url 等。对象上暴露环境变量。这里有一些在所有情况下都可以使用的内建变量。在 package json 配置 --mode env文件名称。Vite 在一个特殊的 import.meta.env。在根目录新建env 文件 可以创建多个。如下 env.[name]...

qq1195566313的博客 8715

【Node】Node.js中的使用Path模块操作文件路径

给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve(‘/foo’, ‘/bar’, ‘baz’) 会返回 /bar/baz。以上是两种不同系统背景下的路径分隔符,接下来我们来了解编程语言背景下的分隔符使用,: 返回路径的扩展名,即从路径的最后一部分中的最后一个.(句号)字符到字符串结束。用于返回一个路径的最后一部分,也就是文件名。: 返回一个对象,对象的属性表示路径的。

时清云的博客 431

Node.js中__filename、__dirname、path.dirname()、process.cwd()、url.fileURLToPath等区别详解

(Current Working Directory),这个工作目录是指运行 Node.js 进程时所在的目录,通常与启动脚本的位置有关,常用于与命令操作相关的场景。方法将一系列路径或路径段解析为绝对路径。特定平台的分隔符,是指操作系统使用的路径分隔符,不同操作系统的路径分隔符是不同的。是一个全局变量,返回当前模块所在目录的绝对路径,返回值不受调用代码的位置影响。作为分隔符,将所有给定的路径段连接在一起,然后对生成的路径进行规范化处理。成的路径将被标准化,并且尾随斜杠将被删除,除非该路径被解析为根目录。

2401_89221445的博客 1102

2021-08-24 corCTF2021-devme 知识点:GraphQL,json

文章目录前言一、工具和使用网址二、具体payload总结 前言 最近去看了看国外的题目,给打蒙了,第一道最简单的不会做,唉o(╥﹏╥)o,是一道关于GraphQL的题目,以前完全没接触过啊,一开始找到了突破点,但是一直在burpsuit尝试,这是条错误的道路啊啊啊啊,后面才了解到需要GraphQL有自己的内省查询,可以使用它的工具,啊啊啊啊,活到老学到老。 一、工具和使用网址 Introspection-GraphQL 《解析 GraphQL 的查询语法》【译】 GraphiQL查询工具 YouTube

m0_51326092的博客 904

Spring Boot AOP优雅记录日志

本文介绍了使用Spring AOP实现方法级日志记录的完整方案。主要包括:1)添加Spring Boot AOP依赖;2)创建@Loggable注解,支持配置日志级别、参数记录等;3)实现LoggingAspect切面,处理方法的入参、返回值、执行时间和异常;4)可选Web请求日志切面;5)使用示例展示注解在Controller和Service层的应用。该方案具有无侵入性、灵活配置、性能优化和敏感信息过滤等特点,能有效提升系统可观测性,同时保持代码整洁。

油墨香^-^的博客 5705

如何在使用 ES Modules 的 Node.js 应用中创建和使用 __dirname 和 __filename 这两个全局变量

在 Node.js 的 ES Modules (ESM) 环境中,传统的 CommonJS 全局变量__dirname和__filename不再直接可用。这是因为 ES Modules 采用不同的模块解析策略,更加符合 ECMAScript 标准。因此,如果在使用 ES Modules 格式编写 Node.js 代码,需要使用不同的方法来获取当前模块的文件路径和目录路径。这段代码演示了如何在使用 ES Modules 的 Node.js 应用中创建和使用__dirname和__filename。

于坤 795

找不到模块“@/....”或其相应的类型声明。

@/ 找不到模块

yanhhhhhh的博客 1万+
上一篇: 第六届“强网杯”全国网络安全挑战赛
下一篇: 巅峰极客2022wp
Pysnow
博客等级 码龄5年 44粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pysnow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值