基础学习
[TOC]
建立学习参考目标
(1)短期参考比自己优秀的同龄人。阅读他们的文章和工作成果从细节中观察他们的学习方 式和工作方式。
(2)中期参考你的方向上的业内专家。了解他们的成长轨迹’跟踪他们关注的内容。
(3)长期参考业内老牌企业和先锋企业把握行业发展、技术趋势’为未来做积累
二进制文件从源代码到可执行文件编译原理编译器的作用是读人以某种语言(源语言)编写的程序,输出等价的用另一种语言(目标语言) 编写的程序。
GCC编译GCC编译主要包括四个阶段:预处理、编译、汇编、链接。*(-o 选项用于指定编译后生成的输出文件名)*
1gcc hello.c -o hello //终端运行即可获得可执行文件hello
hello.c–>hello.s–>hello.o
预处理将#开头的预处理指令转换后直接插入程序文本中,得到另一个c程序 hello.i
1gcc -E hello.c -o hello.i //-E可以单独执行预处理
预处理的一些处理规则如下:
递归处理#include预处理指令将对应文件的内容复制到该指令的位置;
删除所有的#define指令并且在 ...
agent学习(更新中)
这篇文章用来记录所学到的关于agent、大模型等关于AI的知识
学习资料:Lordog/dive-into-llms: 《动手学大模型Dive into LLMs》系列编程实践教程
大模型是如何理解自然语言的将自然语言转换为高维向量做数据相似匹配
文本
向量(简化版)
含义
猫喜欢吃鱼
(0.9, 0.1)
靠近 “宠物 / 动物” 方向
猫咪爱吃鱼
(0.88, 0.12)
和上一句向量几乎重合 → 关联度极高
汽车需要加油
(0.1, 0.9)
靠近 “交通工具” 方向,和前两句距离很远 → 关联度极低
概念引入LLM(大语言模型):一个会说话会生成文本的大脑,例如deepseek,chatgpt这样的模型,它能够理解自然语言,生成连贯的文本,基于上下文做推理等
向量(一个高维数组):
维度
数学里的向量
Embedding 里的向量
形式
(x, y) 或 (x, y, z) 等低维数组
比如长度为 1536、768 的高维数组,例如 [0.12, -0.34, 0.56, ..., 0.78]
核心作用
表示空间中的方 ...
数据结构学习
树一、先搞懂:什么是「树」?1. 直观理解树是一种非线性的数据结构,长得和现实中的树一样:
有一个「根」,从根上长出「树枝」,树枝再分叉出更多小树枝,最后到「叶子」。
和数组、链表这种 “一条线” 的线性结构不同,树是 “一层一层分叉” 的结构。
2. 核心定义(抽象版)树是由 n (n ≥ 1) 个节点组成的有限集合:
有且仅有一个特定的节点,称为根节点(Root);
其余节点可分为 m (m ≥ 0) 个互不相交的有限集合,每个集合本身又是一棵树,称为根的子树(Subtree)。
二、基础术语:先把 “零件” 认全以这棵简单的树为例(A 是根):
12345 A / \ B C / \D E
术语
解释
对应例子
根节点(Root)
树最顶层、没有父节点的节点
A
父节点(Parent)
有子节点的节点
A 是 B、C 的父节点;B 是 D、E 的父节点
子节点(Child)
某个节点下面直接连接的节点
B、C 是 A 的子节点;D、E 是 B 的子节点
叶子节点(Leaf)
没有子节点的节点
C、D、E
兄弟节 ...
agent使用相关记录(更新中)
vibecodingCodeGraph官网:codegraph — Understand any codebase as a graph
问题:项目文件太大导致我30w输入100输出库库烧钱
问题本质是agent在开发时由于我提示词没有精准到文件或片段,导致它需要总览一遍代码再思考输出
了解到CodeGraph给项目做知识图谱,让agent能快速理解项目并定位文件
引用文章CodeGraph:给 AI 编程助手装上代码知识图谱,省 35% 费用、减少 70% 工具调用 - iTech - 博客园
配置:
把官网链接丢给agent让它自己配
初始化项目12cd your-projectcodegraph init -i
重启 Agent重启 Claude Code / Cursor / Codex 即可。Agent 检测到 .codegraph/ 目录会自动使用 CodeGraph 工具。
卸载改主意了?一行命令从所有 Agent 中移除:
1codegraph uninstall
Vim 详细使用指令
Vim 详细使用指令(按功能分类)
说明:本文默认你在 普通模式(Normal) 下输入命令;: 开头的是 命令行模式(Ex);Ctrl+x 表示按住 Ctrl 再按 x。记忆建议:先掌握 模式切换 → 移动 → 编辑 → 搜索替换 → 多文件/窗口 这条主线。
0. 模式与基础概念0.1 三大常用模式
普通模式(Normal):移动光标、触发编辑指令(默认进入)。
插入模式(Insert):输入文本。
可视模式(Visual):选中文本后再操作(复制/删除/缩进等)。
0.2 常用按键约定
ESC:回到普通模式(最重要的键之一)。
::进入命令行模式,输入 Ex 命令。
.:重复上一次“修改类”操作(极高频)。
u / Ctrl+r:撤销 / 重做。
1. 启动、退出与帮助1.1 启动
vim file.txt:打开文件
vim +n file.txt:打开并跳到第 n 行
vim +/pattern file.txt:打开并定位到第一次匹配
vim -o a b:横向分屏打开多个文件
vim -O a b:纵向分屏打开多个 ...
第八届玄武杯pwn方向题解
ret2text 64出题人:mint1.wp:checksec:
堆栈不可执行,没有开canary防止栈溢出,没有开PIE
来到IDA中分析
有后面函数system('/bin/sh')位于hint中,记录其地址0x40136F
漏洞位于func函数
gets()函数不检查输入信息的长度,存在栈溢出风险
v1是栈上的变量,在执行完func函数后程序会根据栈上数据跳转到进入func函数前压入的父函数位置,我们需要利用gets函数输入数据覆盖掉这一返回地址,跳转到hint函数中利用后门函数获取shell,但是64位函数执行system(‘/bin/sh’)前需要堆栈平衡,当我们在backdoor函数之前加入一个 ret 指令后栈顶下移8个字节使之对齐 16Byte 为此满足了XMM寄存器的要求成功得到shell,关于堆栈平衡可以看这篇文章https://zhuanlan.zhihu.com/p/611961995
payload = b'a'*(0x30+8) + p64(ret) + p64(backdoor)
0x30个a是为了 ...
markdown语法教学
markdown语法教学什么是markdown语法?Markdown 是一种轻量级标记语言,用简单的符号标记文本格式,无需复杂排版操作就能生成结构化文档。
它的核心价值在于 “易读易写”,既适合日常记录(如笔记、待办),也能用于创作(如文章、报告),且生成的内容可轻松转换为 HTML、PDF 等格式。
核心优势
语法简单:仅需记住十几个基础符号,几分钟就能上手。
跨平台兼容:几乎所有笔记软件(如 Notion、Obsidian)、写作平台(如知乎、GitHub)都支持 Markdown。
专注内容:无需频繁点击格式按钮,用符号就能快速设置标题、列表等,减少排版干扰。
常用基础语法标题:在本软件中一共有6级标题 有几个#就是几级
加粗:这是一段加粗文本
1**这是一段加粗文本**
斜体:这是一段斜体文本
1*这是一段斜体文本*
转义如果你只是想要这个符号不想生成对应格式,可以使用” \ “转义
正常输入一段内容需要用到 *
12*3*3=
会变成这样:
233=
转义后则为
12\*3\*3=
2*3*3=
引用:
这是一段引用文本
1>这是一段 ...
AWDP
AWDP合集使用到的优秀插件
Accenture/VulFi: IDA Pro plugin for query based searching within the binary useful mainly for vulnerability research.
2025省赛电信量子杯这次的patch都很简单,但是还是要注意很多细节,比如patch.sh文件不能写错,challenge写漏了一个e导致浪费了16次机会(我就说这exp怎么这么厉害我改这么多都能利用成功),sh文件也就是执行shell的文件,用于把修改过的ELF文件替换到服务器上
打包命令1tar czvf patch.tar.gz patch.sh patch_ok
patch.sh一定要仔细检查有没有写对啊
12#!/bin/bash cp patch_ok /home/ctf/challenge/challenge
heap一道很典型的堆题应该是可以利用double free但是我不会打,但是漏洞还是知道的
ptr指针释放后未指零
出题人很友善在下面放了一个置零操作,那么来到汇编
改fre ...
IOT入门到入土-1
在学习了一段时间x86指令集后打算穿插着点MIPS指令集同步学习,从现在开始入门IOT
学习文章:《IoT从入门到入土》(1)–MIPS交叉编译环境搭建及其32位指令集
1.MIPS交叉编译环境搭建1234567891011121314#!/bin/sh# qemu安装sudo apt install qemusudo apt install qemu-system qemu-user-static binfmt-support# 顺带也将ARM依赖库安装一下sudo apt install libncurses5-dev gcc-arm-linux-gnueabi build-essential synaptic gcc-aarch64-linux-gnu# mips依赖库sudo apt-get install gcc-mips-linux-gnusudo apt-get install gcc-mipsel-linux-gnusudo apt-get install gcc-mips64-linux-gnuabi64sudo apt-get install gcc-mips64e ...
pwn出题小记
pwn出题小记参考文章:Docker部署小记 | 幻境
奇奇怪怪的教程 | Yxing
web和pwn题的简单动态flag实现_gzctf-CSDN博客
所使用的工具:docker、CTF-Xined
pwn题编译1234567gcc -o pwn pwn.c-static #指定静态链接#默认动态链接#指定动态链接文件gcc main.c -o main /usr/lib/x86_64-linux-gnu/libc.so.6
保护
1234567NX:-z execstack / -z noexecstack (关闭 / 开启) 不让执行栈上的数据,于是JMP ESP就不能用了Canary:-fno-stack-protector /-fstack-protector / -fstack-protector-all (关闭 / 开启 / 全开启) 栈里插入cookie信息PIE:-no-pie / -pie (关闭 / 开启) 地址随机化,另外打开后会有get_pc_thunkRELRO:-z norelro / -z lazy / -z now (关闭 / 部分开启 ...






