密码学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...
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 元结算。 原因:服务器没对前端传过来的金额做二次校验,直接信任了用户输入。 登录态绕过 有些...
快速入门sql-b站网课笔记大全
快速入门sql-b站网课笔记大全库解释意思系统: 1.information_schema库:信息数据库例如:数据库名,数据库表,表字段(单词组成的格式)的数据类型与访问权限。2.SCHEMATA表:提供MySQL实例中所有数据库信息show databases 结果来源此表3.TABLES表:提供关于数据中表的信息4.COLUMNS表:提供表中列信息,详细描述某张表的所有列以及每个列信息 mysql库:MySQL的核心数据库储存 数据库的用户,权限设置,关键字performance_schema库:内存数据库sys库:可以查询谁使用最多的资源、哪张表被访问最多 1.注释:–空格 2.列出所有数据库:show databases;3.查看某一数据库中的所有表use 哪一个库;1.use mysql;show tables;2.show tables from mysql;3.select函数select now();查看时间select databases();查看当前选择的库select user()查看当前登录数据库的用户 库解释意思系统: 1.informatio...
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...
快速入门crypto及buuctf题解
快速入门crypto及buuctf题解大帝的密码武器1题解 FRPHEVGL偏移13位security 密文:ComeChina,通过偏移13 得到flag,注意大小写 看我回旋踢1 遇到synt{xx-xx-xx} 判定他为rot13; 题目一般都是提示信息,“回旋踢”就暗示了rot13的特点,会重新绕回; flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1} moectf misc Cor1e的支票解码网站:https://www.dcode.fr/ook-language Ook编码详解123 Ook! 是一种基于极简主义设计的编程语言,属于 esolang(怪异语言)的一种。它是从 Brainfuck 演变而来的,主要用于编码和解码任务。Ook! 的指令由简单的短语组成,例如 Ook. Ook? 或 Ook! Ook!,这些短语对应 Brainfuck 的操作符。 编码规则 Ook! 使用一组固定的短语来表示操作符,每个短语由两个单词组成。以下是 Ook! 和 Brainfuck 的对应关系: Ook. Ook. 对应 >(指针右...