Java安全基础
Java安全基础Note类和对象的关系类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。 类与对象的关系就如模具和铸件的关系 类的实例化结果就是对象,而对一类对象的抽象就是类,类描述了一组有相同属性和相同方法的对象。 class类的newInstance方法class的newInstance()方法,需要我们类中存在无参的构造器,并且能直接访问,它通过无参的构造器来实例化,而一旦我们类中不存在无参构造器,那么第一种方法就不行了 getMethods 和 getDeclaredMethods 方法的区别getMethods:获取当前类或父类或父接口的 public 修饰的字段;包含接口中 default 修饰的方法 (JDK1.8)。 getDeclaredMethods: 获取当前类的所有方法;包括 protected/默认/private 修饰的方法;不包括父类 、接口 public 修饰的方法。 反射Runtime.exec和Proc...
渗透测试面试分区块总结
域渗透123456789101112131415161718192021222324#DC WindowsServer2012域名:y5neko.comNAT:192.168.1.129静态:192.168.1.250密码:Y5NEKO0/Administrator:dc@123NetBIOS域名:Y5NEKO0其他域用户账号密码:user1:win71@123user2:win72@123普通域管理员账号密码:admin:admin@123yueshu:yueshu@123yeushu1:yueshu1@123ziyuanyueshu:ziyuanyueshu@123SYSVOL漏洞测试密码:user@123#WIN71 Windows7密码:Administrator:win71@123静态:192.168.1.3#KaliNAT:192.168.1.128 信息搜集判断域环境1net config workstation 找域控123456#fscan扫描netbios./fscan_amd64 -np -m netbios -h 192.168.1.0/24#ne...
一些关于JavaFX的记录
环境准备下载对应版本JavaFX,解压出来如下:bin目录下所有dll放入jdk的bin目录,lib目录下的所有jar包添加进项目库,src为source源。 Scene图 ## 概述 Scene图是一种树形数据结构,它排列(和分组)图形对象以便于逻辑表示。 它还允许图形引擎以最有效的方式渲染对象, 完全或部分跳过在最终图像中看不到的对象。 下图显示了JavaFX场景图架构的一个示例。 在架构的最顶端有一个`Stage`。 `Stage`是原生操作系统窗口的JavaFX表示。 在任何给定的时间,阶段可以有一个单一的`Scene`连接到它。 场景是JavaFX场景图的容器。 JavaFX `Stage`图中的所有元素都表示为`Node`对象。 节点有三种类型:根、分支和叶。 根节点是唯一没有父节点的节点 直接包含在一个场景中,如上图所示。 分支和叶节点之间的区别在于叶节点没有子节点。 在scene图中,父节点的许多属性由子节点共享。 例如,应用于父节点的转换或事件也将递归地应用于其子节点。 因此,可以将复杂的节点层次结构视为单个节点,以简化编程模型。 我们将在后面的章节中探索转换...
数据结构
PE结构 ## 概念 **PE**(Portable Execute)文件是Windows下可执行文件的总称,常见的有 DLL,EXE,OCX,SYS 等。它是微软在 UNIX 平台的 COFF(通用对象文件格式)基础上制作而成。最初设计用来提高程序在不同操作系统上的移植性,但实际上这种文件格式仅用在 Windows 系列操作系统下。PE文件是指 32 位可执行文件,也称为PE32。64位的可执行文件称为 PE+ 或 PE32+,是PE(PE32)的一种扩展形式(不是PE64)。 名称 描述 地址 是 “虚拟地址” 而不是“物理地址”。不是“物理地址”的原因shi数据在内存的位置经常在变,这样可以节省内存开支、避开错误的内存位置等的优势。同时用户并不需要知道具体的“真实地址”,因为系统自己会为程序准备好内存空间的(只要内存足够大) 节 节 是 PE 文件中 代码 或 数据 的基本单元。原则上讲,节只分为 “代码节” 和 “数据节” 。 镜像文件 包含以 EXE 文件为代表的 “可执行文件”、以DLL文件为代表的“动态链接库”。因为他们常常被直接“复制”到内存...
汇编语言
概念CPU 只负责计算,本身不具备智能。你输入一条指令(instruction),它就运行一次,然后停下来,等待下一条指令。这些指令都是二进制的,称为操作码(opcode),比如加法指令就是00000011。编译器的作用,就是将高级语言写好的程序,翻译成一条条操作码。对于人类来说,二进制程序是不可读的,根本看不出来机器干了什么。为了解决可读性的问题,以及偶尔的编辑需求,就诞生了汇编语言。 汇编语言是二进制指令的文本形式,与指令是一一对应的关系。比如,加法指令00000011写成汇编语言就是 ADD。只要还原成二进制,汇编语言就可以被 CPU 直接执行,所以它是最底层的低级语言。 寄存器CPU 本身只负责运算,不负责储存数据。数据一般都储存在内存之中,CPU 要用的时候就去内存读写数据。但是,CPU 的运算速度远高于内存的读写速度,为了避免被拖慢,CPU 都自带一级缓存和二级缓存。基本上,CPU 缓存可以看作是读写速度较快的内存。 但是,CPU 缓存还是不够快,另外数据在缓存里面的地址是不固定的,CPU 每次读写都要寻址也会拖慢速度。因此,除了缓存之外,CPU 还自带了寄存器(re...
IDA Pro操作指南
摘要工具nm将源文件编译成目标文件时,编译器必须嵌入一些全局(外部)符号的位置信息,以便链接器在组合目标文件以创建可执行文件时,能够解析对这些符号的引用。除非被告知要去除最终的可执行文件中的符号,否则,链接器通常会将目标文件中的符号带入最终的可执行文件中。根据nm手册的描述,这一实用工具的目的是“列举目标文件中的符号”。使用rm检查中间目标文件(扩展名为.0的文件,而非可执行文件)时,默认输出结果是在这个文件中声明的任何函数和全局变量的名称。nm实用工具的样本输出如下所示。从中可以看到,m列出了每一个符号以及与符号有关的一些信息。其中的字母表示所列举的符号的类型。前面的例子中出现了以下字母,下面逐一解释。U,未定义符号,通常为外部符号引用。T,在文本部分定义的符号,通常为函数名称。t,在文本部分定义的局部符号。在C程序中,这个符号通常等同于一个静态函数。D,已初始化的数据值。C,未初始化的数据值。 大写字母表示全局符号,小写字母则表示局部符号。请参阅nm手册了解有关字母代码的详细解释。 如果使用nm列举可执行文件中的符号,将会有更多信息显示出来。在链接过程中,符号被解析成虚拟...
基础免杀
Shellcode加载器在渗透测试过程中,往往需要使用木马上线目标主机来达到持久化、便捷化控制目标主机的目的。shellcode由于其自身可塑性高,杀软查杀难度较高,因此通常将木马shellcode化后,再进行免杀处理。 shellcode shellcode为16进制的机器码,是一种地址无关代码,可在暂存器EIP溢出后,塞入一段可以让CPU执行的恶意代码,从而执行攻击者的任何指令。这是因为,当shellcode被写入内存后,会被翻译成CPU指令。CPU自上而下执行这些指令,这其中有一个特殊的寄存器,EIP寄存器,它里面存放的值是CPU下次要执行的指令地址,因此可以通过修改EIP寄存器的值来执行shellcode。 生成shellcode首先用cs生成用于上线的shellcode calc 1\x48\x81\xEC\x00\x01\x00\x00\x65\x48\x8B\x04\x25\x60\x00\x00\x00\x48\x8B\x40\x18\x48\x8B\x40\x30\x48\x8B\x70\x10\x48\x8B\x58\x40\x48\x8B\x00\x81\x...
Linux运维疑难杂症
Linux运维Docker介绍Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC)。 Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,在正常进程的外面套了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层系统的隔离。 由于容器是进程级别的,相比虚拟机有很多优势。 ①启动快:容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。 ②资源占用少:容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所有资源。另外,多个容器可以共享资源,虚拟机都是独享资源。 ③体积小:容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。 总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。 Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。...
Java学习笔记
JavaIntellij快捷关键字sout:快速生成system.out输出语句 100.fori:以变量i为计数快速生成循环100次的for循环 数组名.fori:以变量i为计数快速生成遍历数组的循环 psvm:快速生成静态main方法 Ctrl + Alt + M:快速从代码中提取方法并生成方法 Alt + INSERT -> Constructor:快速生成构造函数 Alt + INSERT -> getter and setter:快速生成JavaBean的设置器和获取器 运算符加数字相加:直接运算,遵从隐式转换规则; 字符串相加:只要有字符串参与运算时,就变成连接符,不再进行加运算;从左到右逐个执行; 字符相加:字符之间或与数字进行运算时,会先转换为对应的ascii码值再进行运算:1 + 'a' = 98; 自增自减 单独一行使用时++a和a++相同 参与了计算时,++a先运算再赋值,a++先赋值再运算 拓展赋值运算符+=、-=等 先将左边与右边进行运算,再赋值给左边:a += 1 》 a = a + 1 包含了强制类...
内网渗透笔记
内网渗透总结代理方法frp 下载链接:https://github.com/fatedier/frp/releases frp工作原理拓扑图 配置在使用frp之前,首先要对服务端和客户端配置文件(frps.ini & frpc.ini)进行配置 服务端(有公网的机器):frps.ini 123456789101112131415[common]# 监听端口bind_addr = 0.0.0.0bind_port = 7000 # 以下为web页面,可不配置# IP 与 bind_addr 默认相同,可以不设置dashboard_addr = 0.0.0.0# 端口必须设置,只有设置web页面才生效dashboard_port = 7001# 用户密码dashboard_user = y5nekodashboard_pwd = y5neko# 允许客户端绑定的端口allow_ports = 40000-50000 12服务端启动:./frps -c frps.ini后台启动:nohup ./frps -c frps.ini & 客户端(目标机):frpc.i...
