avatar
文章
101
标签
40
分类
18
首页
归档
标签
分类
LogoHuayi
搜索
首页
归档
标签
分类

Huayi

数据结构和算法笔记
发表于2023-09-03|算法
Intro 记录数据结构和算法题 笔记 背包dp 0-1背包 0-1背包指的是容量为W的背包,重量w[i]且价值v[i]的物品,每个物品只有两种状态,取或不取,怎样放入背包使背包中的物品价值最大。 二维数组解法,内存过大 >folded12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;int w[1001];int v[1001];int dp[101][1001];int main(){ int W, N; cin >> W >> N; for (int i = 1; i <= N; i++) { cin >> w[i] >> v[i]; } for (int i = 0; i <= N; i++) { dp[i][0] = 0; } for (int i = 1; i &l...
About Math
发表于2023-04-29|数学
Introduction 介绍有关数学学习的问题 🔗Links how to learn math lesson list Branch of mathematics 线性代数 数学分析 点集拓扑 复分析 群论和抽象代数 伽罗瓦理论 微分几何 代数拓扑
Rev Python
发表于2026-01-26|CTF
常用工具 反编译工具 pylingual https://www.pylingual.io/ uncompyle6 最常用的 Python 2/3 字节码反编译器,支持多种 Python 版本。 123456# 安装pip install uncompyle6# 使用uncompyle6 file.pyc > file.pyuncompyle6 -o output_dir/ file.pyc # 输出到目录 decompyle3 专门用于 Python 3.7+ 的反编译器。 123456# 安装pip install decompyle3# 使用decompyle3 file.pycdecompyle3 file.pyc -o output.py pycdc C++ 编写的 Python 字节码反编译器,速度快,支持 Python 3.7-3.11。 12345678# 下载编译git clone https://github.com/zrax/pycdc.gitcd pycdccmake .make# 使用./pycdc file.pyc > file.py u...
Pwn fmtstr
发表于2026-01-21|CTF
攻击原理 格式化字符串漏洞概述 格式化字符串漏洞(Format String Vulnerability) 是一种常见的漏洞类型,主要出现在使用格式化输出函数(如 printf、sprintf、fprintf 等)时,如果用户输入直接作为格式化字符串参数,攻击者可以通过构造特殊的格式化字符串来实现内存泄露和任意地址写。 漏洞产生原因 正常情况下,格式化函数应该这样使用: 1printf("%s", user_input); // 正确:格式化字符串和参数分离 但存在漏洞的代码可能是: 123printf(user_input); // 错误:用户输入直接作为格式化字符串// 或printf(user_input, arg1, arg2); // 错误:用户输入作为格式化字符串 当用户输入包含格式化字符(如 %x、%p、%s、%n)时,程序会按照格式化字符串的规则解析参数,导致安全问题。 格式化字符串的栈布局 当调用 printf(format, arg1, arg2, ...) 时,参数在栈上的布局如下(32位系统): 12345678910111213...
Pwn rop
发表于2026-01-20|CTF
攻击原理 ROP 技术概述 ROP(Return-Oriented Programming,面向返回的编程) 是一种高级的代码复用攻击技术,由 ret2libc 技术发展而来。当程序开启了 NX(栈不可执行)保护时,无法在栈上执行 shellcode,ROP 技术通过利用程序中已有的代码片段(gadget)来构造攻击链。 ROP 的核心思想 ROP 的核心思想是利用程序中的现有代码片段,通过精心构造的返回地址链,让程序按照攻击者的意图执行一系列操作,最终实现攻击目标。 Gadget 的概念 Gadget 是 ROP 的基本单元,是一段以 ret 指令结尾的短代码序列。每个 gadget 完成一个简单的操作,多个 gadget 组合起来可以完成复杂的功能。 常见的 gadget 类型: 寄存器操作:pop rax; ret、pop rdi; ret、mov rax, rdi; ret 内存操作:mov [rax], rdi; ret、pop rax; pop rdi; mov [rax], rdi; ret 算术运算:add rax, rdi; ret、sub rax,...
Pwn ret2shellcode
发表于2026-01-20|CTF
攻击原理 ret2shellcode 的基本概念 ret2shellcode(Return to Shellcode) 是最经典的栈溢出利用技术之一,核心思想是: 将精心构造的 shellcode(机器码)写入到可执行的内存区域 通过栈溢出覆盖返回地址,跳转到 shellcode 的起始地址 程序执行 shellcode,通常用于获取 shell 或执行其他恶意操作 Shellcode 简介 Shellcode 是一段用于实现特定功能的机器码,通常非常精简。最常见的 shellcode 是用于执行 /bin/sh 获取 shell: 12345# 64位 Linux execve("/bin/sh", NULL, NULL)shellcode = b"\x48\x31\xf6\x56\x48\xbf\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x57\x54\x5f\x6a\x3b\x58\x99\x0f\x05"# 或者使用 pwntools 生成shellcode = asm(shellcraft.s...
Pwn stack pivot
发表于2026-01-13|CTF
攻击原理 Stack Pivot 的提出背景 在实际的栈溢出利用中,经常会遇到以下情况: 溢出空间有限:缓冲区很小,只能覆盖返回地址和少量数据,不足以构造完整的 ROP 链 需要大量 ROP Gadget:复杂的攻击(如 ret2libc)需要多个 gadget 和参数,栈空间不足 栈上数据不可控:虽然可以覆盖返回地址,但栈上的其他数据无法完全控制 Stack Pivot(栈迁移) 技术通过修改栈指针 rsp,将栈迁移到其他可控制的内存区域(如 bss 段、堆、data 段等),从而获得更大的空间来构造完整的 ROP 链。 栈迁移的核心原理 栈迁移的核心是修改 rsp 寄存器,使其指向我们可控的内存区域。关键指令: leave; ret 指令: 12leave ; 等价于 mov rsp, rbp; pop rbpret ; pop rip leave 会将 rbp 的值赋给 rsp,然后弹出 rbp 如果我们能控制 rbp,就能控制新的 rsp xchg rsp, rax; ret 等指令: 直接交换 rsp 和 rax 的值 需要先通过 ...
Pwn ret2libc
发表于2026-01-13|CTF
攻击原理 ret2libc 的提出背景 当程序开启了 NX(No Execute)保护时,栈被标记为不可执行,无法直接在栈上执行 shellcode。ret2text 技术也失效了,因为程序中没有现成的后门函数。 ret2libc(Return to libc) 技术应运而生,它利用程序已经加载到内存中的 libc 动态链接库中的函数(如 system、execve)来执行命令,从而绕过 NX 保护。 libc 动态链接机制 GOT 表(Global Offset Table): 存储外部函数(如 puts、printf)的真实地址 在程序运行时由动态链接器填充 每个外部函数在 GOT 表中都有一个条目 PLT 表(Procedure Linkage Table): 提供外部函数的跳转入口 第一次调用时,通过 PLT 跳转到动态链接器解析函数地址 解析后的地址写入 GOT 表,后续直接跳转 libc 基地址: libc 库在程序运行时被加载到内存中 由于 ASLR(Address Space Layout Randomization)的存在,每次运行基地址不...
Pwn ret2text
发表于2025-12-27|CTF
攻击原理 栈的基本结构 在程序执行过程中,每个函数调用都会在栈上分配一段内存空间,称为栈帧(Stack Frame)。栈帧的结构如下(以64位系统为例): 1234567891011高地址+------------------+| 参数区域 | (函数参数,64位前6个参数通过寄存器传递)+------------------+| 返回地址 | (saved rip, 8字节) ← 关键:控制流劫持的目标+------------------+| 保存的rbp | (saved rbp, 8字节)+------------------+| 局部变量 | (缓冲区、局部变量等)+------------------+低地址 函数调用与返回机制 当函数被调用时: call 指令:将下一条指令的地址(返回地址)压入栈中 函数序言(prologue): 123push rbp ; 保存旧的rbpmov rbp, rsp ; 设置新的栈帧基址sub rsp, 0x30 ; 为局部变...
Pwn Tools
发表于2025-12-27|CTF
pwntools pwntools 是 CTF Pwn 题最常用的 Python 库,提供了与二进制程序交互、调试、ROP 链构造等功能。 模板 123456789101112131415from pwn import *import syscontext.terminal = ['tmux', 'sp', '-h']context.update(log_level='debug', os='linux', arch='amd64')if len(sys.argv) > 1 and sys.argv[1] == "r": io = remote('')else: io = process('')elf = ELF('')# exploitio.interactive() 常用函数 1234567891011121314151617181920212223242526...
12…11
avatar
Huayi
Time to Code.
文章
101
标签
40
分类
18
Follow Me
公告
🚧施工中...
最新文章
Rev Python2026-01-26
Pwn fmtstr2026-01-21
Pwn rop2026-01-20
Pwn ret2shellcode2026-01-20
Pwn stack pivot2026-01-13
分类
  • CS Language7
  • CS Project2
  • CS Tools15
  • CTF10
  • Others1
  • 人工智能2
  • 体系结构2
  • 前端1
标签
CSS OS Git Rust STM32 Latex GNU Make MCU tmux Markdown gdb 8051 Golang ASCII Math Python Physics Vim HTML Linux Java CMake reverse Plan C++ jupyter pwn x86 Shell 0->1 OI CTF RISC-V Windows Network Github ChatGPT Javascript Docker C
归档
  • 一月 2026 6
  • 十二月 2025 2
  • 八月 2025 1
  • 十一月 2023 4
  • 十月 2023 1
  • 九月 2023 3
  • 八月 2023 2
  • 七月 2023 5
网站信息
文章数目 :
101
本站总字数 :
48.9k
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2022 - 2026 By Huayi框架 Hexo 6.1.0|主题 Butterfly 5.4.3
搜索
数据加载中