汇编语言
1 汇编语言基础1.1 寄存器
1.1.1 64位通用寄存器分类:rax\rbx\rcx\rdx\rdi\rsi\r8-r15
作用:主要作为算数运算、暂存数据以及传递参数,其中rax\rbx\rcx\rdx\rdi是基础通用寄存器、rdi\rsi\r8-r15是扩展寄存器 当调用函数时,前6个参数通常不会放在栈上,而是直接塞进指定的寄存器中,传递顺序:rdi>rsi>rdx>rcx>r8>r9
1.1.2 指令指针寄存器作用:指向下一条将要执行的机器指令的地址
pwn的最终目的就是为了劫持rip,控制了rip,就可以按照想要的方式进行
1.2 简单 X64 汇编CPU 内部寄存器之间的数据传送:123mov AL, DH; AL <- DH (8位)mov DX, AX; DX <- AX (16位)mov RAX, RSI; RAX <- RSI (64位) ; 原 32 位为 mov EAX, ESI
CPU 内部寄存器和存储器之间的数据传送:
123mov [BX], AX; 间接寻址 ...
二进制漏洞名词解释
名词解释
exploit
用于攻击的脚本与方案
payload
攻击载荷,是对目标进程被劫持控制流的数据
shellcode
调用目标的shell的代码
GOT 表(Global Offset Table)原理解析1. 核心概念:程序的“动态通讯录”Linux 开启了 ASLR(地址随机化)且采用动态链接,程序在编译时,根本不知道外部库(如 libc.so 中的 printf、system)最终会被加载到内存的哪个具体位置。
GOT 表就是用来存放这些外部符号“真实物理/虚拟地址”的指针数组。
2. 构成拆解:变量表与函数表GOT 在底层被划分为两个权限和用途不同的节区:
.got(变量偏移表)
存放内容:外部全局变量的绝对地址(例如 stdin、stdout)。
解析时机:程序启动(Load)阶段,动态链接器会一次性把它全部填好。
.got.plt(函数偏移表)
存放内容:外部库函数的绝对地址(例如 puts、read)。
解析时机:为了不拖慢程序启动速度,采用延迟绑定机制,用到哪个函数,才去查哪个函数的地址。
3. 运行原理:延迟绑定(Lazy Bindi ...
格式化字符串
简介格式化字符串函数:格式化字符串函数就是将计算机内存中表示的数据转化为我们人类可读的字符串格式
函数
基本介绍
printf
输出到 stdout
fprintf
输出到指定 FILE 流
vprintf
根据参数列表格式化输出到stdout
vfprintf
根据参数列表格式化输出到指定 FILE 流
sprintf
输出到字符串
snprintf
输出指定字节数到字符串
vsprintf
根据参数列表格式化输出指定字节到字符串
setproctitle
设置argv
syslog
输出日志
err、verr、warn、vwarn等
…
用 print() 为例,它们的第一个参数就是格式化字符串:”Color %s.Number %d.Float %4.2f“,然后printf函数会根据这个格式化字符串来解析
%d - 十进制-输出十进制整数%s - 字符串-从内存中读取字符串%x - 十六进制-输出十六进制%c - 字符-输出字符%p - 指针-指针地址%n - 到目前为止所写的字符数
参数如下:%[paramete ...
SSTI
SSTI在Python中,SSTI经常与jinja2、Django、Mako、Tornado等模版引擎结合,其核心思想是利用模板引擎的核心机制和应用程序将不安全输入传递给模板的方式构造合适的payload以获取风险函数,如popen、system、eval等。
模版引擎Python的模版引擎大多采用相同的语法结构,{% ... %} 和 {{ ... }} 。前者用于执行诸如 for 循环或赋值的语句,后者把表达式的结果打印到模板上。
在本地编写一个含有SSTI漏洞的测试环境:
11<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14|from flask import Flask, request, render_template_string<br><br>a ...
验证码与密码找回漏洞
验证码漏洞验证码是什么?
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。
同时验证码还可以用于区分用户身份(手机验证码、邮箱验证码等)
验证码的作用?
可以防止恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。
这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
验证码五花八门,有中文字,纯数字,点击字符、数学运算、滑动方块……
验证码机制原理
->客户端发起请求,
->服务端响应并创建一个新的SessionID同时生成随机验证码,
->服务端将验证码和Sess ...
SSRF基础
1 SSRF是什么? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。
1.1 URI VS URL 在web中每次请求的目标叫一个资源,可以有照片、视频等。
URI:在文本中都有一个统一标识符确定,这个标识符称为统一资源标识符,是一组字符串。
URL:最常用的uri形式,统一资源定位符,也叫web地址。
1.2 URI结构 uri就类似一个独一无二的身份标识。
准确的说是某个网络资源的特有标识(用来区别于其他资源的独一无二的标识)具体什么样的叫做uri呢?我就直接给个java所举的uri的例子:
(First line of HTTP request )HTTP请求的第一行
uri
POST /some/path.html HTTP/1.1
/some/path.html
GET http://foo.bar/a.html HTTP/1.0
/a.html
HEAD /xyz?a=b HTTP/1.1
/xyz
...
Web 流量伪造与访问控制绕过
Web 流量伪造与访问控制绕过1. 概述在 Web 架构中,服务端的访问控制策略(如 IP 白名单、设备限制、内部路由校验)往往依赖于 HTTP 请求头(HTTP Headers)中的信息。然而,HTTP 请求头完全由客户端控制。当服务端(尤其是处于反向代理、负载均衡或 WAF 之后的应用)未能正确鉴别数据的真实来源,盲目信任这些可被篡改的字段时,就会引发流量伪造与访问控制绕过漏洞。
这类技术常用于信息收集阶段的防护绕过、越权访问以及自动化测试(如 Fuzzing)。
2. 核心伪造技术2.1 客户端 IP 伪造 (IP Spoofing)当流量经过 CDN、WAF 或反向代理(如 Nginx)时,后端的 Web 应用无法直接通过底层 TCP 连接(如 PHP 的 $_SERVER['REMOTE_ADDR'])获取真实客户端 IP,通常会转而读取代理服务器附加的 HTTP 请求头。若后端逻辑存在缺陷,攻击者即可通过手动注入这些头部来伪造源 IP。
常用伪造场景: 绕过基于 IP 的后台限制(提示“仅限本地或受信任网络访问”)。
常见测试 Payload (目标 IP ...
未授权访问漏洞
定义一种错位配置或懒惰式配置导致原本需要账号密码才能访问的后台变成可以直接访问的漏洞
利用这种漏洞可以做什么?
获取后台敏感数据,寻找其他漏洞进一步利用,甚至直接或者间接控制目标机器
错位配置或者初次安装使用默认配置导致
Mysql未授权访问未授权访问-CVE-2012-2122利用漏洞简介当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据库
受影响的版本MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not.MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.
启动环境123cd vulhub-master/mysql/CVE-2012-2122sudo docker-compose up -d
漏洞复现先判断服务开放情况 - 端口扫描
在线扫描:http://coolaf.com/zh/tool ...
CSRF基础
本次课程是 Web 安全漏洞学习的延续,系统讲解CSRF 跨站请求伪造漏洞,从定义、原理、攻击条件、测试流程、分类利用、实操案例、防御手段全维度拆解,同时明确 CSRF 与 XSS 的核心区别,以下是分模块的详细总结,包含所有实操步骤、核心思路和必备知识点。
1 CSRF 跨站请求伪造基础认知(定义 + 核心区别 + 必备知识点)1.1 核心定义
全称:跨站请求伪造,简称 CSRF(课程中笔误写为 CSF/XSF,均指同一漏洞);
别称:One click attack(一键式攻击),因攻击者只需诱骗用户点击一次恶意链接即可完成攻击;
本质:挟持已登录 web 应用的用户,在其合法权限下执行非本意的操作,攻击者无需盗取用户账号、密码等信息,仅借用用户的登录状态。
条件:
后台为登录状态
数据包添加的格式
1.2 CSRF 与 XSS 的核心区别二者均需向用户发送恶意 链接 诱使其点击,但权限获取方式、操作主体、攻击逻辑完全不同,是 Web 安全中极易混淆的两个漏洞,核心对比如下表:
表格
对比维度
CSRF 跨站请求伪造
XSS 跨站脚本攻击
核心逻辑
借用用户已 ...
安卓逆向前期知识
认识ActivityActivity 是Android应用程序的四大组件之一,负责管理应用的用户界面。每个Activity组件负责一个用户界面的展示,通常应用中的某一个Activity被指定为主界面,这是应用用户启动时出现的第一个屏幕。
Activity跳转1 概述Activity之间的跳转主要使用
12startActivity(Intent intent);startActivityForResult(Intent intent,int requestCode);
这两个函数,传递数据的话利用Intent进行传递,负责数据需要配合Bundle使用。
2 Activity间跳转2.1 直接跳转这里有两个Activity:FirstActivity与SecondActivity,从FirstActivity中跳转到SecondActivity中只需要一个startActivity()即可:
1startActivity(new Intent(this,SecondActivity.class));
一般需要在SecondActivity中加上finish()函数,表示这个Activi ...








