自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 贡献Prometheus——从源码到运行(Day01)

本文记录了Prometheus监控系统的本地部署过程,主要包括源码获取、编译运行和健康检查三个步骤。首先通过git克隆源码并配置代理,然后进行编译和基础配置。文章还详细解释了配置文件中的关键参数含义,如scrape_interval和targets等。在问题解决部分,介绍了Node版本管理工具nvm的使用方法,并对比分析了npm、npx、全局node_modules和npm缓存的关系与区别。最后强调健康检查与指标抓取的本质差异,前者是基础存活检测,后者是详细监控数据分析。全文提供了从环境搭建到概念解析的完整

2026-01-05 20:11:30 737

原创 Golang(Handler入门)

本文深入解析Golang HTTP服务开发的三种核心实现方式:1)通过自定义结构体实现Handler接口;2)使用HandlerFunc类型适配普通函数;3)直接调用HandleFunc简化注册。文章从底层接口设计出发,展示了从基础实现到简化封装的演进过程,包含具体代码示例,帮助开发者理解Golang HTTP服务的本质实现原理。

2026-01-05 16:21:06 379

原创 open-webui+deepseek api实现deepseek自由

本文介绍了如何通过Open-WebUI优化使用DeepSeek AI的体验。首先需要配置与Open-WebUI兼容的Python虚拟环境,然后在DeepSeek平台充值获取API密钥。接着在Open-WebUI的管理员面板中输入API URL和密钥,即可在界面中看到新增的DeepSeek模型并开始使用。整个过程旨在改善官网体验,但需要注意API使用费用。

2025-03-08 22:20:13 750

原创 elasticsearch安装插件analysis-ik分词器(深度研究docker内elasticsearch安装插件的位置)

本文记录了在Docker中安装Elasticsearch 7.17.2并配置IK分词器插件的过程。首先下载了Elasticsearch和IK插件,然后通过Docker运行容器,设置内存参数和网络配置。进入容器后,使用elasticsearch-plugin命令安装IK插件,安装完成后检查了文件系统变化,确认插件已成功安装到config/analysis-ik目录下。整个过程展示了从环境搭建到插件安装的完整步骤,为后续使用Elasticsearch进行中文分词处理奠定了基础。

2025-02-07 19:42:59 1224

原创 Deepseek本地部署(ollama+open-webui)

首先是安装ollama,这个非常简单下载安装即可。

2025-01-30 01:10:02 1643

原创 [GUET-CTF2019]re

【代码】[GUET-CTF2019]re。

2023-10-31 13:49:12 453

原创 CrackRTF

md5加密这一步其实可以饶绕过,直接看异或这一步。获取到一个rtf文件。获取到第二次的密码。然后输入两次的密码。注意rtf的文件头。

2023-10-31 11:09:02 311

原创 [WUSTCTF2020]level1

加密算法是从 index 1—19。

2023-10-30 14:50:06 234

原创 RSA加解密

本文介绍了RSA非对称加密算法的基本原理与实现过程。首先描述了密钥生成步骤:选择大质数p、q计算n,选择公钥e并计算私钥d。接着说明加密过程:将明文m转换为整数后计算密文C。然后给出了解密方法:使用私钥d还原明文。文章最后提供了Python代码示例,展示如何通过已知的p、q、e计算私钥d,并使用rsa库对加密文件进行解密。该摘要简明扼要地概括了RSA算法的主要流程和实现方式,重点突出了从公钥推导私钥并完成解密的技术要点。

2023-10-30 14:00:00 290

原创 Shellcode——绕过31

所以我想,那就吧所有小于31的加上31,然后运行的时候这部分代码自己修改自己。遇到了一道ctf题目,要求shellcode的每一个字节都必须大于31。也就是SMC,,简称自修改代码。

2023-10-26 22:51:24 658

原创 pwncollege.ReverseEngineering

【代码】pwncollege.ReverseEngineering。

2023-09-24 18:35:53 655

原创 Building a Web Server

题目描述说的很明白无非创建文件,按照它描述的指令一步一步写出来。

2023-08-06 16:59:25 369

原创 SQL注入

举个例子无论如何都正确字符型绝对正确好奇啊,怎么select还可以这样做呢?

2023-08-06 11:28:09 219

原创 pwncollege基本使用与scp下载

本文介绍了使用SSH密钥连接Pwn College服务器的步骤:1) 使用ssh-keygen生成公私钥对(key为私钥,key.pub为公钥);2) 将公钥粘贴到服务器Settings的SSH Key中;3) 使用ssh -i key连接服务器。当连接成功后,可以通过scp命令下载挑战文件到本地,避免在线操作卡顿,特别是逆向工程题目建议下载到本地分析。示例下载指令为:scp -i key hacker@dojo.pwn.college:/challenge/文件路径 ./。

2023-07-25 15:43:46 1348

原创 安卓开发二三事儿

安卓开发中调用子模块的方法:在项目中新建模块并将源码和资源放入,在setting.gradle中添加include ':模块名',然后在主模块的build.gradle中添加依赖implementation project(':模块名')即可实现模块间的调用。这种方法简单直接,适用于大多数开发场景。

2023-07-13 21:14:44 289

原创 Java—Spring—BeanFactoryPostProcessor

摘要:该示例展示了Spring框架中BeanFactoryPostProcessor的用法。通过MyBeanFactoryPostProcessor在容器初始化后修改Bean定义,将userDao的实现类从UserDaoImpl改为UserServiceImpl。测试代码从容器获取三个Bean实例(userDao、userService、userService2)时,由于修改了Bean定义,三个实例实际都是UserServiceImpl类型。这验证了BeanFactoryPostProcessor可以在Be

2023-03-03 12:02:23 207

原创 PWN:partial overwrite

摘要:本文讨论了一个关于内存地址覆盖的调试技巧,建议关闭PIE保护后通过GDB调试查看后4字节内容,再编写脚本尝试覆盖。提供的Python脚本演示了如何构造payload进行地址覆盖攻击,利用十六分之一的概率快速触发目标地址。调试时需注意使用send而非其他发送方式以避免影响内存数据。

2022-10-19 20:47:26 293

原创 PWN:[WEEK2]ret2libc

pwn

2022-10-19 20:41:44 347 1

原创 PWN:[WEEK2]ret2csu

pwn

2022-10-19 20:34:19 384

原创 PWN:[Week1]safe_shellcode

pwn

2022-10-19 20:27:05 839 1

原创 PWN:intorw

pwn

2022-10-19 20:14:36 233

原创 PWN:Protostar Heap0

pwn

2022-10-19 18:06:14 229

原创 partial overwrite绕过PIE

pwn

2022-10-16 23:04:25 433

原创 pwn练习 2022.10.03

pwn

2022-10-03 20:52:56 260

原创 SWPU NSS新生赛(校外通道)

ctf wp

2022-09-28 15:50:35 810 1

原创 PWN:Bad Seed

感觉没什么太特殊的地方,都是把原本的代码拿过来用而已,所以就觉得这些东西,没什么意思。上面的代码是我从文章中自己摘出来的,然后自己看了看文章的解决方案写出的代码。第一题:破解下面的程序:random.c#include <stdio.h>#include <stdlib.h>#include <time.h> int main(){ srand((unsigned int)time(NULL)); int targetnum=rand

2022-03-01 19:03:21 356

原创 PWN:关于对Random函数的研究

random在CTF中经常出现,所以今天我想深度的研究这个函数。srand()函数原型:void srand(unsigned seed);给rand()函数设置种子。rand()函数原型在执行前,会先查看是否使用了srand()函数。1.使用了srand(seed),就按照这个东西来产生随机数。2.没有使用srand(seed),就默认使用了srand(1)来产生随机数。time函数原型:time_t time(time_t *timer)timer=NULL时得到当前日历时间(从1

2022-03-01 11:11:47 869

原创 Leetcode-198. 打家劫舍

自己一定要相信自己分析:假设只有一家可以打劫,那就偷窃这一家即可。假设有两家可以偷窃,那就偷窃两者中金额最大的那一家。假设有三家,那就比较偷窃第一家+第三家的金额之和和第二家的金额做比较,选最大的那个。设dp[i]是偷窃到当前人家的最大金额数。当前这家有两种选择:偷如果偷,那么前一家就不能偷,也就是dp[i-1]不能偷,得到的金额就是dp[i-1]+nums[i]。不偷如果不偷,那么前一家就可以偷,得到的金额就是dp[i-1].由此得到状态转移方程:dp[i]=

2022-02-07 12:01:21 285

原创 Leetcode-746. 使用最小花费爬楼梯

已经麻了,熟了,就巧了。边界问题研究,或者说,问题分析。有n层楼梯,从第一层或者第二层开始走,一次走一步或者两步,直到楼梯顶部,也就是第n+1层。那么对应下标是从0或1开始到n。对于这个记录数组来说基础值:dp[0]=dp[1]=0公式:dp[i]=min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])式子什么意思?到达第i层,有两种可能,从第i-1层走一步,花费为dp[i-1]+cost[i-1]从第i-2层走两步,花费为dp[i-2]+cost[i-2]

2022-02-06 18:25:21 225

原创 Leetcode-70. 爬楼梯

这题秒杀,典型的动态规划。参考链接:Leetcode-1137.第 N 个泰波那契数就是一点,就是关于下标与顺序。class Solution {public: int climbStairs(int n) { //记录数组 vector<int> v; //基础值 v.push_back(1); v.push_back(2); //公式 //v[i]=v[i-1]+

2022-02-06 17:58:53 5965

原创 Bugku-清凉一夏

应该是套神的题目。解压后是一张图片,打开是一张二维码,扫一下:得到字符串:happyctf不知道什么意思。010我自己也看不懂,所以直接kali跑一下。binwalk分析一下,里面有别的内容。得到一个压缩包。打开是一张图片,被加密了。我们可以猜到密码就是扫码的到的字符串。解压成功。图片打开,什么也不显示。可能已经损坏。010看一下,缺少jpg文件头。插入三个字段即可。然后改为 FF D8 FF。图片显示成功:容易想到修改图片宽高。查找一下宽高。搜一下

2022-02-05 20:30:51 2625

原创 Bugku-社工-进阶收集

应该是套神的题目。首先打开压缩包,得到这样的一张图片:百度识图得知是西安大雁塔。高德地图西安地铁线路从始发站开始,经过七站,到达大雁塔的,只有这个韦曲南。我们来看韦曲南:以韦曲南地铁站为中心,以八百米为半径画圆。符合条件的只有:1.兰乔国际城2.广天苑小区然后自己试一试就知道答案是兰乔国际城。flag{lanqiaoguojicheng}...

2022-02-05 19:54:15 494

原创 Leetcode-1137.第 N 个泰波那契数

跟斐波那契数列基本一样。参考文章:斐波那契数列想都不想,直接秒杀:class Solution {public: int tribonacci(int n) { //记录的数组 vector<int> v; //基准值 v.push_back(0); v.push_back(1); v.push_back(1); //公式 //v[i]=v[i-1]+

2022-02-05 19:17:26 460

原创 Leetcode-509斐波那契数

斐波那契额数列。算是最简单的了。第一种:递归class Solution {public: int fib(int n) { if(n<2){ //这一步真是巧妙,我还一直担心,觉得n==0和n==1还要分开讨论, //结果,直接return n;什么心也不用操。 return n; }else{ return fib(n-1)+fib(n-2); }

2022-01-30 19:58:19 626

原创 Leetcode-121

动态规划,不会。硬着头皮上。官方的答案确实很厉害;找历史最低点(),然后计算今天卖得到的收益是多少。首先是找一个很大的值,假设第一天之前的历史最低点(注意不包括今天)为一个很大的值,这样对第一天而言,它的历史最低点是那个很大的值。然后从第一天开始遍历,此时我们已经知道了这一天的历史最低价格,就可以计算倘若今天卖出的收益是多少。计算后,结果肯定是个负值,和我们的初始设置的最大收益0比较,显然是小的,所以我们选择第一天不卖出。接着,我们算算下一天的历史最低价格。然后遍历完就可以了。class

2022-01-29 21:54:29 294

原创 CS:APP-3.2.2

复现mstore.c文件long mult2(long,long);void multstore(long x,long y,long *dest){ long t=mult2(x,y); *dest=t;}然后执行命令:$ gcc -Og -S mstore.c接着就生成了一个.s文件。文件可以直接打开,内容如下: .file "mstore.c" .text .globl multstore .type multstore, @functionmultstore:

2022-01-28 14:25:40 508

原创 set,map,unordered_set,unordered_map

我查了查:set和map底层是红黑树,unordered_set和unordered_map底层是哈希表。底层set,map红黑树unordered_set,unordered_map哈希表set和unordered_set,是集合,不能插入相同元素。set以红黑树为底层,自动排序。unordered_set以哈希表为底层,不会自动排序。map和unordered_mapmap以红黑树为底层,自动排序。unordered_map以哈希表为底层,不会自动排序。

2022-01-28 11:09:49 1284

原创 Leetcode-217

第一种方法:先试用C++内置算法sort来对数组进行排序,然后,从第一个元素开始两两比较,一旦出现相同的就返回true。class Solution {public: bool containsDuplicate(vector<int>& nums) { sort(nums.begin(),nums.end()); int size=nums.size(); for(int i=0;i<size-1;i++){

2022-01-27 18:32:14 162

原创 HAUST自动报平安-傻瓜级教程

-大佬文章之前的操作首先对邮箱进行操作:

2022-01-27 16:40:27 1734 1

原创 Pwncollege:Program Interaction

这题很奇怪直接返回到主目录,然后进入challenge目录,执行程序即可。

2022-01-04 13:51:07 1238

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除