HTTP API授权认证:服务器的灵魂三问——你是谁?你要干啥?你能干啥?
最近在工作里看了蛮多流量,有一天突然注意到http的请求头内容里的Authorization头,看到时突然有种既熟悉又好像有哪里不对的感觉,仔细看了下单词拼写才发现和之前经常见到的身份认证头Authentication不同,先前比较熟悉的还是身份认证(Authentication)中的Basic、JWT等,并且最近挖SRC的过程中看到很多认证方式,遇到了也只能挑熟悉的下手。于是起了兴趣研究一下HTTP中的认证方式,本文主要从理论内容上浅析一下HTTP API中的授权认证(纸上谈兵版)。
引言众所周知,HTTP协议是无状态的,也就是其对于事物处理没有记忆能力,服务器不知道客户端是什么状态,当客户端給服务器发送http请求后,服务器根据请求将响应数据发送回来后就不会记录其他信息,即使是使用Keep-Alive也没办法改变此类结果。因此,在我们需要获得用户是否登录的状态时,就需要·检查用户的登录状态。通常用户成功登录后,服务器会为用户分配一个登录凭证(Token),这个登录凭证一般又会有两种存放形式,一是以Cookie的方式存储在客户端,另外一种则是以Session的方式存储在服务器端,在客 ...
逆向学习(2)---分析实践
刚学习编程时,是从C语言的HelloWorld开始的,那么此处就也从HelloWorld开始分析吧,其中引出了C语言中的调用约定的学习。
还是那个Hello World使用C编写一个输出HelloWorld的简单程序:
12345#include<stdio.h>int main() { printf("Hello, World!\n");}
将其打包为一个可执行程序,并使用IDA打开:
可以看到IDA将程序中的机器码转换为了汇编语言的形式。
在IDA显示的内容中,发现除了接触过的汇编语言以外,还存在:
1; int __fastcall main(int argc, const char **argv, const char **envp)
递归学习一下
C语言的调用约定(Calling Convention)在C语言中,有不同的调用约定,用来定义函数如何调用、参数如何传递以及栈的清理方式。它们的主要区别如下:
__cdecl(C Declaration)特点:
C的默认约定。
参数从右到左依次压入栈。
返回值通常存储 ...
逆向学习(1)---基础知识
所谓技多不压身,最近准备抽空学习一些逆向的内容,在拓宽自己的安全知识的同时也多尝试一些新的领域。
基础概念1. 什么是逆向工程在编写代码时,我们的目标是将源代码转换为可执行程序,而逆向工程,顾名思义,就是将编译链接好的程序反过来恢复到“代码级别”的内容。这里的“代码级别”指的是程序逻辑的表述形式,而不是完全还原到源代码。原因在于,源代码的编译过程是不可逆的,我们无法从编译后的程序中完全恢复出原始源代码。
逆向工程通常需要借助工具对程序进行反编译,将二进制文件转化为汇编代码,有时甚至可以进一步恢复成更高级的伪代码。
像日常用到的一些C\C++程序在经过编译和链接后,程序为机器码,从而可以直接被执行程序的CPU等理解与使用。这类程序我们使用IDA、OD等逆向工具,只能将其中的机器码恢复为汇编代码状态,然后通过读汇编代码来理解程序的运行过程与机制。相比这一类编译运行类的程序,依靠java虚拟机、.NET等运行的程序,由于所生成的字节码(供虚拟机解释运行)仍然具有高度抽象性,所以这类程序的逆向得到的伪代码的可读性更强,有时甚至接近于源码。但是在生成字节码的过程中,变量名、函数名是丢失的,所以伪 ...
SSRF服务端请求伪造攻击
一直准备把之前在CSDN写的内容都翻新一下重新搬运到现在的博客下,今天偶然遇到了一个可能存在SSRF的漏洞点,但是很多细节一瞬间没办法想起来了,正好趁现在来整理整理。
简介服务端请求伪造(Server Side Request Forgery, SSRF),是一种攻击者在不具有服务器权限的情况下,利用服务器的漏洞来伪装成服务器发起请求的攻击。由于此时请求是由服务器发起的,所以在一般情况下,SSRF攻击的目标一般为外网无法正常访问的内部系统。
简单来说:利用一个可向外发起请求的服务器当作跳板访问其他服务。
SSRF漏洞分类根据是否回显可以划分为3类:
Basic SSRF:在响应内容中返回结果。例如,传送一个网址,会直接返回这个网址的界面或对应的html内容。
Blind SSRF:响应中不返回服务器中的任何信息。
Semi SSRF:响应中不返回请求结果的所有详细信息,但是会暴露一些数据信息。
常见参数(测试时可额外留意)share、wap、url、link、src、source、target、u、3h、display、sourceURL、imageURL、domain、……
SS ...
PHP反序列化
反序列化是当前较为热门的一个漏洞,主要产生原因是太过信任客户端提交的数据,开发者容易忽略一些安全因素,进而可能会导致可执行任意命令或代码,安全方面的影响较大。
漏洞成因 序列化和反序列化是一种常用的技术,通常用于对象状态的保存和恢复。序列化是将对象转换为可以存储或传输的数据格式的过程,而反序列化则是将这些数据恢复为原始对象的过程。尽管这些操作在多种编程环境中都非常有用,但如果处理不当,也可能成为安全漏洞的来源。
在某些情况下,应用程序在实现如身份验证、文件读写、数据传输等关键功能时,可能会将序列化数据通过网络传输或保存在外部存储中。如果这些序列化数据未经加密或签名处理,或者加密实现不当(例如使用硬编码的密钥,如在Apache Shiro 1.2.4中见到的问题),则这些数据可以被恶意用户读取或篡改。
此外,已知存在安全缺陷的序列化库(如早期版本的Fastjson)进行数据处理,也会增加应用程序受攻击的风险。这些库可能存在缺陷,允许攻击者构造特定的序列化数据来执行未授权的代码或命令。
序列化与反序列化序列化:把变量或对象转化为可以传输的字节序列的过程反序列化:把字节序列还原为变 ...
Pytorch学习
近期准备开始做毕设,因为要用来实现一些算法的功能,因此在对比了各种框架后还是选择了pytorch。相较于其他的深度学习框架,pytorch的使用更加的简洁,也易于理解,并且,还有一个选择它的原因在于Github上有很多的开源代码都是使用PyTorch进行开发的。而且Pytorch也有着越来越完善的扩展库,可以说正处于当打之年。
Pytorch加载数据 如何使用pytorch加载读取数据,主要涉及到两个类 Dataset 和 Dataloader 。
Dataset 对数据进行加载时,例如对一堆数据,例如此时图中的”垃圾“,dataset主要是告诉我们如何获取数据,例如提取可回收数据,并对其进行一个编号。同时还会获取数据相应的label,因此dataset主要是提供一种方式来获取数据及其真实的label。
Dataloader 可用来对dataset整理出来的数据进行打包,主要是为了为后面的网络提供不同的数据形式。
对Dataset来说,如何获取每一个数据及其label、告诉我们总共有多少个数据,是它主要实现的功能。
以下是一个读取数据示例:
12345678910111213 ...
