写给自己的年终总结
回首往昔 算了算,自己应该算是从22年的4月份正式开始学习网安的吧,因为那时候正好被学校的网安战队面试通过(其实根本就不算什么考核这些,因为就几个人去参加了面试,所以都通过了),因此便把这个日子认作了自己正式入门网安的纪念日子(说什么入门,反而是入门摔死在门槛上了😅)
当时团队的师傅便拟了一个web学习的提纲,自己便按着提纲在学习。但是总觉得学归学,没有什么拿来练手的,今天学的明天或许过几日就会忘的一干二净,索性花了几百块钱,在ctfshow上买了一个会员开始狂刷web题目。最开始也就只顾着刷题了,没有闲工夫去总结,后来发现做过的题目好像再去做一遍又忘记了,因此自己结合其他师傅的学习过程,学会了要记笔记,多写博客。一是用来记录学习过程,二是用来看看自己刷了多少题(都说CTF要么智商200+,要么刷题10000+)。
慢慢的题目是刷了很多了,但是越学越发现自己的无知。只要稍微大点的比赛,自己要么只能解出签到题,要么就是零解。只有偶尔的BUU或者NSS上举行的新生赛的题目能做完web题目,但是到了最后几天放的题目都不从下手了。就这样自己的自信越打越没了。特别是2022年的重庆市 ...
URLDNS_学习笔记
写在前面现在正式开始进行反序列化了,想要学习就应该先了解序列化和反序列化
知识预备序列化是为了将对象进行长期存储而诞生的方法,那么反序列化就是将存储的序列化内容恢复成对象。亦或是把对象转换成二进制的字符串,又把二进制的字符串转换成对象。
如何才能实现序列化和反序列化了?在 Java 的类中,必须要实现 java.io.Serializable 或 java.io.Externalizable 接口才可以使用,而实际上 Externalizable 也是实现了 Serializable 接口。
Java 提供了两个类 java.io.ObjectOutputStream 和 java.io.ObjectInputStream 来实现序列化和反序列化的功能,其中 ObjectInputStream 用于恢复那些已经被序列化的对象,ObjectOutputStream 将 Java 对象的原始数据类型和图形写入 OutputStream。
Java允许开发者对readObject进行功能的补充,所以在反序列化过程中如果开发者重写了readObject方法那么Java会优先使用这个重写的方 ...
不能说的秘密-有感而发
前言这两周摆大烂了,追了好多电视剧和电影,没来得及补充Bolg,靠这篇来滥竽充数吧=_=给自己找了点借口:
外因:疫情封校寝室上网课,听不进去
内因:自己的懒惰,在压抑的学习中迷失了方向,自制力不够强
剧1. 《你安全吗》
这一个月左右很火的一部剧,是以网安为题材的电视剧。个人绝对还是比某亲爱的,某热爱的好看每一集的最后还是会介绍一些现实生活中的安全小例子,还是丰富了我的一些知识和见解
2. 《猎罪图鉴》
看这个的原因是这个大数据搞怪,檀健次演完了你安全吗,就给我推了这部剧。本来想着就点进去看一下讲的什么,结果越看越上瘾了^_^,是以画像师为题材,以现代社会为背景,在高科技信息化发展的情景下,收集个人信息,并进行贩卖的罪案剧,还是蛮有趣的,可以看看。
3. 《麻雀》
记得我第一次看这部剧是初二还是初三的时候,当时这部剧是在湖南卫视上热播的吧当初里面有我喜欢的许多演员:李易峰,阚清子,张若昀,张鲁一,尹正我觉得这里面最复杂的人物就是李小男了,在身份公布之前,有很多细节都暗示了她是一名共党这是我重新观看后才慢慢看懂的,剧中的苏三省这个汉奸是真的被尹正给演的淋漓尽致! ...
Java_IO流学习笔记
前言学习IO流是为了更好的理解序列化和反序列化
学习IO流还得先从File讲起
文件:保存数据的地方文件流:文件在程序中是以流的形式来操作的
流:数据在数据源(文件)和程序(内存)之间经历的路径
输入流:数据从数据源(文件)到程序(内存)的路径
输出流:数据从程序(内存)到数据源(文件)的路径
从三个常用的API着手
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
下面给出三种创建File的方法1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253package IO;import jav ...
静态/动态代理学习笔记
前言代理模式:给某一个对象提供一个代理,并由代理对象来控制对真实对象的访问。代理模式是一种结构型设计模式。举个例子,生活中的房产中介,婚介中心等都是代理
代理模式角色分为 3 种:
Subject(抽象主题角色):定义代理类和真实主题的公共对外方法,也是代理类代理真实主题的方法;
RealSubject(真实主题角色):真正实现业务逻辑的类;
Proxy(代理主题角色):用来代理和封装真实主题;
代理模式按照职责(使用场景)来分类,至少可以分为以下几类:
远程代理
虚拟代理。
Copy-on-Write 代理。
保护(Protect or Access)代理。
Cache代理。
防火墙(Firewall)代理。
同步化(Synchronization)代理。
智能引用(Smart Reference)代理等等。
如果根据字节码的创建时机来分类,可以分为静态代理和动态代理:
所谓静态也就是在程序运行前就已经存在代理类的字节码文件,代理类和真实主题角色的关系在运行前就确定了。
而动态代理的源码是在程序运行期间由JVM根据反射等机制动态的生成,所以在运行前并 ...
类加载机制和双亲委派机制
写在前面此篇文章,是由自己作为打字员一字一字copy过来的,防止文章不见了,以方便自己查看,顺便练习下打字打发时间QAQ这里在讲一个笑话,我把自己的分类的英文单词categories打成了categorier,导致了自己前几篇文章一直无法在分类上显示出来,分类一直为零。刚刚我打开markdown时,去写categories才发现了问题,以至于自己蠢到上一周花了好多时间去看修改源码(以为是源码关闭了分类的显示)
概叙Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这个过程被称作虚拟机的类加载机制Java类型的加载,连接和初始化过程都是在程序运行期间完成的
经行提前编译会面临额外的困难
稍微增加一些性能开销
提供了极高的扩展性和灵活性
类加载时机类的生命周期
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载,验证,准备,解析,初始化,使用,卸载这7个阶段.其中其中验证、准备、解析3个部分统称为连接.
加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类型的加载过程 ...
Java反射学习
写在前面第一次学习java反射,可能有些错误,希望师傅们能及时指正我QAQ
什么是反射
反射机制的核心是在程序运行时动态加载类并获取类的各种信息,从而操作类或者对象的属性和方法。本质是:JVM得到class对象后,再通过class对象进行反编译,从而获得对象的各种信息
Java属于先编译再运行的语言,程序中对象的类型再编译器就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所有没有被加载到JVM中,通过反射,就可以再运行时动态的创建对象并调用其属性和方法,不需要提前在编译期知道运行的对象是谁
反射常用的类
Java.lang.Class
Java.lang.reflect.Field
Java.lang.reflect.Method
Java.lang.reflect.Constructor
Java.lang.reflect.Modifier
先抛出我写的类123456789101112131415161718192021222324class Member{ public String name; protected int a ...
文件上传漏洞+upload-labs
文件上传
基本概念在可以进行文件上传的地方,如果服务端和客户端没有对上传的文件进行严格的验证和过滤,就可能导致恶意文件被上传,恶意文件又被称为webshell。webshell具有非常强大的功能,因此造成的危害也很大。
文件上传的题型和解题思路大概可以被以上两个图包含了
以upload-labs为例子讲解环境准备https://github.com/c0ny1/upload-labs下载地址,然后放在PHPstudy/www下,即可开启我们文件上传的征程
一·前端JS检验绕过源码分析1234567891011121314151617function checkFile() { var file = document.getElementsByName('upload_file')[0].value; if (file == null || file == "") { alert("请选择要上传的文件!"); return false; ...
文件包含漏洞学习笔记
文件包含
基本概念程序的开发人员为了方便代码的引用,减少代码的重写率,因此开发出文件包含的函数,能够直接通过文件包含函数解析另一个文件的代码,进而增加了开发的效率。
漏洞形成的原因在包含文件时,由于没有正确的判断和验证来源文件的可靠性,从而导致了用户可以随意的进行文件包含,进而可能导致文件泄露或者恶意代码的注入。
相关函数12341.include() //包含时遇到报错仅仅发出警告然后继续执行2.include_once() //同include一样,只是包含过的文件就不会再包含了3.require() //包含时遇到报错就会停止4.require_once() //同require一样,只是包含过的文件就不会再包含了
对include和require,k0rz3n师傅做了个很形象的比喻
在php这个工厂里,include() 是一个比较松散的员工,平时没有活干的时候他就闲着,
从来不想着自己看有什么活主动一点,于是只有当程序运行到 include() 的时候他才会执行,
并且呢也因为他松散的天性,在出错的时候他也只是报一个警告,并不会让程序中断
但是, ...
Session反序列化
最近做了几道Session相关的题目,所以想记录一下什么是PHP Session首先应该先了解什么是sessionSession被我们称作“会话控制”,可以简单的理解为客户和网站或者服务器比较安全的对话方式。Session对象存储特定用户会话所需的属性及配置信息。一旦开启了session会话,就可以在网站的任何页面使用或者保持这个会话了,从而建立了一种“会话”机制。
PHP Session是一中特殊的变量,可用于存储关于用户会话的信息,或者更改用户会话的设置,PHP Session变量储存单一用户信息,并且对于应用程序中的所有页面都是可用的,并且相对于的具体session值会存储域服务器端,这也是与cookie的区别。
PHP session的php.ini配置
session.sava_path=’’设置session的储存路径
session.save_handler=’’该配置主要设定用户自定义存储函数,如果想使用PHP内置session储存机制之外的可以使用这个函数
session.user_strict_mode严格会话模 ...