CTF&密码学与社会工程
了解密码学和社会工程攻击和网络情报,以及夺旗。
1,133个主题在此版块
-
- 0 篇回复
- 1.1k 次查看
靶场链接:https://www.vulnhub.com/entry/harrypotter-aragog-102,688/ 信息收集 开局nmap gobuster web扫描 访问/blog发现是个wordpress 需要添加hosts (这里我已经添加了) wpscan扫描wordpress (存在wp-admin用户) 插件扫描,存在wp-file-manager插件,版本6.0 wpscan --url http://aragog.hogwarts/blog -t 20 --plugins-detection aggressive 1 这个版本存…
Anonymous的最后回复, -
开篇 协会纳新的人数越来越多,也直播了一些基础课程,不知道大家有没有全部看懂.初入信息安全不知道如何学是很常见的,我们竞赛的类型主要是CTF(cross the fire (o゚v゚)ノ2333开玩笑。。。。好吧是夺旗战 这是针对0基础的同学写的入门篇目,请大佬们轻喷~~ CTF介绍 CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形式,2013年全球举办了超过五十场国际性CTF赛事。而DEFCON作为CTF赛制的发源地,DEFCON CTF也成为了目前全球最高技术水平和影响力的CTF竞赛,类似于CTF赛场中的“世界杯” 。(好想去DEFCONヾ(≧へ≦)〃... ...咳) CTF是一种流行的信息安全竞赛形式,其英文名可直译为“夺得Flag”,也可意译为“夺旗赛”。其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容(格式一般为 flag{XXXXXX} ),并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。 总而言是这种赛事就是通过技术手段(pwn 逆向分析 decode等)从 …
Tenfk的最后回复, -
思路 社工.zip
flower X的最后回复, -
- 0 篇回复
- 216 次查看
最近Heap加密对BeaconEye很火,我自己正好在写C2,所以简单记录一下。过程遍历进程拥有的堆。编译堆分配的块。XOR 分配块中的数据。 过程首先使用 GetProcessHeaps 获取进程拥有的所有堆句柄。DWORD GetProcessHeaps(DWORD 堆数,PHANDLE 进程堆);然后使用 HeapWalk 枚举所有分配的堆块。 (这个功能设计的很好,终于不用First Next了)(heapEntry.wFlags & PROCESS_HEAP_ENTRY_BUSY)布尔堆走(处理 hHeap,LPPROCESS_HEAP_ENTRY lpEntry); 代码 #include <windows.h> #include <stdio.h> …
TxxT的最后回复, -
- 2 篇回复
- 848 次查看
1-pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency>…
KaiWn的最后回复, -
- 0 篇回复
- 173 次查看
DELL R820服务器有告警,进入idrac卡发现: http://www.worldorder.net/wp-content/uploads/2020/02/image-9-1024x447.png虚拟磁盘发现坏块。 对于此问题,先使用OMSA对虚拟磁盘做一致性检测 Consistency Checks,然后再删除坏块 Clear Virtual Disk Bad Blocks。 参考资料: https://www.dell.com/support/article/cn/zh/cnbsd1/sln111146/how-to-handle-puncturing-bad-blocks-on-virtual-disks-for-poweredge-servers?lang=en
HACK1949的最后回复, -
攻击模式 ¶ 在我们攻击一个密码学系统时,我们或多或少会得到关于这个系统的一些信息。根据得到信息量的不同,我们可以采用的方法就可能不同。在当今的密码学分析时,一般我们都会假设攻击者知道密码学算法,这个假设是合理的,因为历史上有很多保密的算法最后都被人所知,比如 RC4。被知道的方式多重多样,比如间谍,逆向工程等。 这里我们根据攻击者获取密码学系统的信息的多少将攻击模式分为以下几类 唯密文攻击:攻击者仅能获得一些加密过的密文。 已知明文攻击:攻击者有一些密文对应的明文。 选择明文攻击:攻击者在开始攻击时可以选择一些明文,并获取加密后的密文。如果攻击者在攻击中途可以根据已经获取的信息选择新的明文并获取对应的密文,则称为适应性选择明文攻击。 选择密文攻击:攻击者在开始攻击之前可以选择一些密文,并获取解密后的明文。如果攻击者在攻击图中可以根据已经获取的信息选择一些新的密文并获取对应的明文,则称为适应性选择密文攻击。 相关密钥攻击:攻击者可以获得两个或多个相关密钥的加密或解密后的密文或明文。但是攻击者不知道这些密钥。 常见攻击方法 ¶ 根据不同的攻击模式,可能会有不同的攻击方法,目前常见的攻击方法主要有 暴力攻击 中间相遇攻击 线性分析 差分分析 不可能差分分析 积分分析 代数分析 相关密钥攻击 侧信道攻击 参考文献 ¶ https…
CHQ1d的最后回复, -
- 0 篇回复
- 774 次查看
类型转换 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换 类型转换: byte,short,char--->int--->long--->float--->double (低--------------------------------------------------高) 运算中,不同类型的数据先转换成同一类型,然后进行运算 强制转换:(类型)变量名 (高-------->低) 自动转换: (低-------------->高) 注意: 不能对布尔值进行转换 不能把对象类型转换为不相干的类型 在把高容量转换为低容量时,强制转换 转换的时候可能存在内存溢出,或者精度问题 //操作比较大的数时,注意溢出问题 int money=10_0000_0000;//JDK7新特新,数字之间可以用下划线分割 int years=20; int total1=money*years;//变为负数,数值太大 int total2=money*years;//也是负数,默认为int,转换之前已经存在问题了 int total3=money*((long)years);//先把一个值转换为long System.out.println(total); 每日分享: 一个人使劲踮起脚尖靠近太阳的时候,全世界都挡不住她的阳光
HACK1949的最后回复, -
- 0 篇回复
- 744 次查看
计算机基础 `冯诺依曼体系结构:控制器、运算器、寄存器、输入设备(Input)、输出设备(Out) CPU(中央处理单元):控制器+运算器 常见语言的发展历程 机器语言:(高1低0电平,由一系列的01组合而成) 汇编语言:(ADD SUB CMP,较为繁琐) 高级语言 C语言(1970年,前身是B语言,面向过程的语言,时钟周期,指针) C++(1984年,面向对象语言【语言王国】) Python (1989年,吉多:人生苦短,我用Python【简单、快捷、高效】,爬虫,数据分析、人工智能【科学家】、云计算【脚本语言】) PHP(1994年、弱类型语言,简单,容易上手,开发速度较快速) Java(1995年,瓜哇岛,基于C和C++,面向对象) // java不跨平台(源码) java语言跨平台 // java语言跨平台原理:不同平台安装不同版本的虚拟机 但是最终解释器解释的都是同一份字节码 这个过程实现了跨平台性 JavaScript(1995年,脚本语言) C# / .Net(2000年微软推出)` Java语言主要特征 简单、面向对象、分布式、安全健壮、在体系结构中相对独立、高性能、可移植性强、动态、多线程 Java开发环境的搭建 `1、搭建JDK(Java开发工具包)环境 安装jdk_8u73_windows_i586_8.0.730.2.exe 1)此电脑-高级系统设置(系统属性)-环境变量-系统变量(新)-变量起名JAVA_HOME-粘…
HACK1949的最后回复, -
- 0 篇回复
- 749 次查看
高清扫描版 下载链接:https://pan.baidu.com/s/1b0XxUXAEGT7T7xFkOle3gQ 点击这里获取提取码
HACK1949的最后回复, -
- 0 篇回复
- 756 次查看
Day1 重新学习java的笔记 重新学java 初入大四,开始了秋招,才惶惶察觉自己大学期间什么也没学到,大一大二一直在研究算法,只在杂七杂八的算法比赛得过奖,却没机会去参加ACM算是一个遗憾,不过倒是洛谷签到硬生生签了365天,编译一直用的C++,然而大学从大三开始的课程却是要用到java,于是大三几乎没再碰过C++,靠着C++基础,转用java,倒是能勉强能用,但是对java只有一个大概的印象。 学校的课程是先从java开始,然后接触javaweb,数据库,再进阶SSM三层架构写一个项目,然后接着教Android开发,到大三下的课设已经是要完成一个既有Android 端又有前端SSM架构的项目,靠着从第一个项目的代码(不知道从哪复制粘贴的),自己倒是照葫芦画瓢,也就是复制粘贴以前的代码,重新修改一下数据库,改一下每一个类及参数,毫无长进的完成每一个课设,全都是临时抱佛脚,迷迷糊糊的看一遍教学视频,至于为什么这样用,倒是没有一个清晰的概念。 到了大四没有任何大型java项目的经验,以这个水平,自觉在秋招没什么底气,于是下定决心在学校期间重新系统的学习一遍java全栈的知识,来弥补自己的不足。 从JavaSE开始 java基础 我的java语言基础一直是依赖C++的语法,对java的细节一直没怎么了解,由于以前写的项目都是用eclipse写的,但是由于这个ide太过老旧且写着不方便,于是决定更换IDEA使用,为了更彻底,更卸载了当初初学java时下载的jdk为15的版本,重新下载java8,也是因为java8用的更多。不…
HACK1949的最后回复, -
1:java为什么能跨平台; Java之所以能跨平台,是因为java虚拟机(JVM)能跨平台。 因为Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种“中间码”——字节码。然后不同的硬件平台上安装有不同的Java虚拟机(JVM),由JVM来把字节码再“翻译”成所对应的硬件平台能够执行的代码。因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。 因为它有虚拟机(JVM),JAVA程序不是直接在电脑上运行的,是在java虚机(简称JVM)上进行的,每个系统平台都是有自己的虚拟机(JVM),所以JAVA语言能跨平台。 2:java字节码是什么? Java字节码是Java虚拟机执行的一种虚拟指令格式。 Java 字节码(英语:Java bytecode)大多数操作码都是一个字节长,而有些操作需要参数,导致了有一些多字节的操作码。而且并不是所有可能的256个操作码都被使用;其中有51个操作码被保留做将来使用。除此之外,原始Java平台开发商,升阳微系统,额外保留了3个代码永久不使用。 开头:magic 被称为“魔数”,用来标识.class文件的开头。所有合法的.class字节码都应该是该数开头,占4个字节。 ajor_version.minor_version 形成当前.class文件的版本号,一般由编译器产生,由sun定义,占4个字节。 CONSTANT_Class_info 记录class或interface名 3:java编写程序的步骤? 编写源文件 保存源文件 编译源文件 运行程序 4: …
HACK1949的最后回复, -
1:二进制怎么表示正整数与负整数? 23的原码是010111。反码是010111(正数的反码是它本身)。补码是010111(正数的补码也是它本身)。 -16的原码是110000。反码是101111(负数的反码符号位不变,数值为1变为0,0变为1)。补码是110000(负数的补码位反码+1)。 对于负整数而言,按照“原反码=原码(最高位不变,其余按位取反);补码=反码+1”原则发生变化: 比如-5的存储: 【因为-5表示是:1000 0101(原码)=>1111 1010(反码)=>1111 1011(补码,存储的就是这个)】 2:位(bit),与字节是什么? 1、字节 字节来自英文Byte,音译为“拜特”,习惯上用大写的“B”表示。 字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特(1Byte=8bit),八位二进制数最小为00000000,最大为11111111;通常1个字节可以存入一个ASCII码,2个字节可以存放一个汉字国标码。 2、位 来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,一个二进制位只可以表示0和1两种状态(21);两个二进制位可以表示00、01、10、11四种(22)状态;三位二进制数可表示八种状态(23),以此类推。 3:java的基本的数据类型有哪些?占多少字节? 整型(4个): byte、short、int、long = 1,2,4,8 浮点型(2个):float、d…
HACK1949的最后回复, -
### hello World 1 随你新建一个文件夹 存放代码 2 新建一个java文件 1 文件后缀名为. java 2 Hello.java 3 [注意点] 系统可能没有显示后缀名.需要我们手动打开 3 编写代码 public class Hello{ public static void main(String[] args){ System.out.print("Hello,World!"); } } 4 编译 编译javac java文件 会生成一个class文件 没有生成class文件遇到bug了 报错 ----- -------命令不存在--------------环境变量没有改好 5运行class文件 java class 可能遇到情况 1,字母大小写不能出现问题 java大小学敏感 2.尽量使用英文编译文件夹 3文件名和类名必须一致 4符号使用中文的了 ![j截图]()
HACK1949的最后回复, -
- 0 篇回复
- 762 次查看
当JVM内存不足时,会抛出java.lang.OutOfMemoryError. 主要的OOM类型右: Java heap space:堆空间不足 GC overhead limit exceeded : GC开销超出限制 Permgen space:永久代内存不足 Metaspace:元空间内存不足 Unable to create new native thread:无法创建新的本地线程 Out of swap space? : 交换空间内存不足 Kill process or sacrifice child Java heap space:堆空间不足 通用解决方案:通过-Xmx设置更大的堆内存【该方式可能只是延迟报错的发生,如果不能从根本上找到原因,报错还是可能会发生】 进一步原因分析及解决方案: 流量/数据量峰值 : 可以考虑添加机器资源,或者做限流 内存泄漏 : 需要找到持有的对象,修改代码 创建了一个超大对象(通常是一个大数组) : 可以进行业务切分 代码示例 内存泄漏【-Xmx10m】 package oom; import java.util.HashMap; import java.util.Map; /** * 内存泄露 */ public class JavaHeapSpace2 { public static void main(String[] args) { Map<Key,String> map = …
HACK1949的最后回复, -
- 0 篇回复
- 750 次查看
转:https://blog.csdn.net/m0_52043808/article/details/123137339 为什么使用泛型 泛型的字面意思就是广泛的类型。利用泛型,同一套代码可以用于多种数据类型, 这样,不仅可以复用代码,降低耦合,而且可以提高代码的可读性和安全性 可读性:var s=new ArrayList<String>(); 安全性: (1)编译器可以检查,防止插入错误类型的对象。即把运行时出现的强制类型转换异常提前到编译器异常。 ArrayList<String>list=new ArrayList<>(); list.add("abc"); list.add(1);//报错 (2)ArrayList内部如果不使用类型参数,而使用Object数组,那么当获取一个值时必须进行强制类型转换。当使用向下转型并且对象数据类型不同时会出错。 安全性(2)代码 //缺省默认为Object类型 ArrayList list=new ArrayList(); list.add("a"); list.add(1); Iterator it=list.iterator(); while(it.hasNext()){ Object obj=it.next(); 如果想要使用对象的方法,必须使用强制类型转换. } //坏处:不能调用对象的方法(向上转型),当使用向下转型并且对象数据类型不同时会出错 学习泛型的用处:排除代码的问题,读懂集合类内部工作原理 Strin…
HACK1949的最后回复, -
- 0 篇回复
- 751 次查看
可能遇到问题 每个单词的大小不要出现问题,Java是大小写敏感的 尽量使用英文; 文件名 和 类名必须保持一致,并且首字母大写 使用了中文符号 Java程序运行机制 编译型 解释型 快捷键笔记 main方法快捷键:psvm 输出快捷键:sout Java基础语法 注释、标识符、关键字 注释 comments 注释不会被执行,单行注释//、多行注释/* */ 文档注释 标识符 JAVA所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。 注意点: 所有的标识符都应该以字母(A-Z或者a-z),美元符( $ )、或者下划线( _ )开始。 首字符之后可以是字母(A-Z或者a-z),美元符( $ )、下划线( _ )或数字的任何字符组合。 不能使用关键字作为变量名或方法名。 标识符是大小写敏感的。 合法标识符举例:age、$salary、_value、__1_value 非法标识符举例:123abc、-salary、#abc 可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音。 关键字 数据类型 Java的数据类型分为两大类:基本类型、引用类型。 基本类型 整数类型 byte short int long long c = 685145L; //long类型要在数字后面加L(不加不会报错) //整数拓展: 进制 二进制0b 十进制 八进制0 十六进制0x int i = 10; int i2 = 010; //八进制0 …
HACK1949的最后回复, -
浏览器显示 后端报错 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [], template might not exist or might not be accessible by any of the configured Template Resolvers at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.1.RELEASE.jar:5.2.1.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:503) ~[jakarta.servlet-api-4.0.3.jar:4.0.3] at…
HACK1949的最后回复, -
- 0 篇回复
- 748 次查看
Java设计模式 - 享元模式
HACK1949的最后回复, -
- 0 篇回复
- 742 次查看
/** * 从 buf 中查找 "\r\n",并返回这段(包括 \r\n)空间的长度。 * 如果 buf 中没有,则返回 0 。 */ private static int findLineEnd(final byte[] buf, int rlen) { int splitbyte = 0; while (splitbyte + 1 < rlen) { if (buf[splitbyte] == '\r' && buf[splitbyte + 1] == '\n' && splitbyte + 1 < rlen) { return splitbyte + 2; } splitbyte++; } return 0; } /** * 半包、粘包问题解决: * 从 InputStream 中找一行数据并返回。「一行」的标志是截止到 \r\n,不包括 \r\n 。 */ private static String readLine(InputStream inputStream) throws IOException, RuntimeException { int splitbyte = 0; int rlen = 0; byte[] buf = new byte[BUFSIZE]; int read = -1; inputStream…
HACK1949的最后回复,