- 博客(39)
- 收藏
- 关注
原创 攻防世界—easyupload
本文介绍了利用.user.ini文件构造PHP后门的方法。.user.ini作为目录级配置文件,可通过auto_prepend_file和auto_append_file参数包含恶意文件。文章演示了绕过PHP标签过滤的一句话木马变种,以及通过修改Content-Type上传.user.ini和恶意图片文件的具体步骤。最终利用蚁剑连接获取flag文件,展示了从文件上传到获取服务器权限的完整攻击链。这种攻击方式利用了PHP配置文件的特性,具有较强隐蔽性。
2025-10-21 18:00:03
190
原创 CTFSHOW—WEB5
本文介绍了PHP中参数校验的难点及MD5"0e"绕过的方法。要求传递两个参数v1(纯字母)和v2(数字或数字字符串),且它们的MD5值必须相等。通过使用ctype_alpha()和is_numeric()函数进行校验,并利用MD5哈希值以"0e"开头的特性(如"QNKCDZO"和"314282422"的MD5值均为0e开头),可以在松散比较时相等。解题思路是传入特定的参数对,如v1=QNKCDZO和v2=314282422,满足
2025-10-20 21:21:33
231
原创 CTFSHOW—WEB4
本文介绍了PHP文件包含漏洞的利用方法,重点分析了日志注入攻击的实现过程。通过解读目标服务器的Nginx日志路径(/var/log/nginx/access.log),演示了两种注入方式:使用HackBar插件或Burp Suite工具注入一句话木马(<?php@eval($_POST['pass']);?>)。最后利用中国蚁剑连接后门获取网站内容。文章提供了完整的漏洞利用思路,从服务器类型判断到最终渗透的全过程。
2025-10-20 21:07:16
244
原创 CTFSHOW WEB 3
文章摘要:该文介绍了PHP"文件包含"漏洞的成因及利用方法,重点分析了php://filter和php://input两种伪协议的使用场景。通过burp抓包,在GET请求中拼接伪协议参数,在POST请求中构造执行代码(如system('ls')),最终在ctf_go_go_go文件中获取到flag。文章提供了从漏洞发现到利用的完整解题思路。
2025-10-14 15:47:23
303
原创 CTFSHOW WEB 2
摘要:本文介绍了SQL注入的基本方法,重点分析了字符型注入的判断与利用方式。主要内容包括:1)通过单引号闭合测试字符型注入;2)联合查询注入的完整流程;3)利用information_schema系统表获取数据库信息;4)关键MySQL函数的使用。实战演示了从判断注入点到最终获取flag的完整过程,包括确定列数、查询数据库名、获取表名和字段信息等步骤,最终通过联合查询成功获取flag表中的数据。
2025-10-13 20:42:24
414
原创 CTF攻防世界WEB精选基础入门:simple_php
本文分析了PHP代码中的参数处理逻辑,重点考察GET请求中参数a和b的验证机制。通过代码解读发现:1)参数a需要同时满足等于0和存在的矛盾条件;2)参数b不能为数字且值需大于1234。文章建议直接通过URL拼接方式绕过这些限制条件,无需过多解释代码细节。该摘要简明扼要地概括了原文的核心内容和技术要点。
2025-10-13 00:00:00
300
原创 CTF攻防世界WEB精选基础入门:weak_auth
本文介绍了弱认证绕过方法,包括暴力破解、抓取口令、默认凭证利用、会话劫持和漏洞利用等。解题思路展示了通过burp抓包、爆破密码的过程:首先尝试弱口令,然后使用intruder模块对密码字段进行爆破,通过响应长度差异识别出正确密码为"123456",最终成功获取flag。这些方法揭示了弱认证系统的安全隐患,强调了加强认证机制的重要性。
2025-10-12 00:00:00
261
原创 CTF攻防世界WEB精选基础入门:command_execution
本文介绍了ping命令的安全漏洞及Linux常用命令的应用技巧。主要内容包括:1)ping命令可能存在的缓冲区溢出漏洞及攻击方式,如利用管道符执行其他命令;2)ls命令的常用参数和语法,用于查看目录内容;3)cat命令查看文件内容的方法及常用选项;4)解题思路:通过ping拼接命令查找文件,或使用find命令直接定位文件路径。文章重点警示了ping命令可能被恶意利用的风险,并提供了Linux系统下文件查看的实用操作指南。
2025-10-12 00:00:00
334
原创 CTF攻防世界WEB精选基础入门:simple_js
本文介绍了JavaScript的基础语法和解题思路。主要内容包括:1. JavaScript基本结构,如嵌入HTML方式、变量声明(var/let/const)、数据类型(基本类型和引用类型)、运算符和控制结构;2. 函数定义、对象和数组的使用方法;3. 事件处理机制。通过分析一个密码解密函数的示例代码,展示了如何将16进制编码转换为ASCII编码,最终得出密码"Cyberpeace{786OsErtk12}"的过程。文章结合理论知识和实际案例,帮助读者理解JavaScript代码的执行
2025-10-11 00:00:00
763
原创 CTF攻防世界WEB精选基础入门:xff_referer
本文摘要: XFF(X-Forwarded-For)用于获取经过代理服务器后的客户端真实IP,格式为"X-Forwarded-For:客户端IP"。Referer用于标识请求来源网址。解题时需使用BURP抓包,先通过XFF发送指定IP地址123.123.123.123,根据页面提示再使用Referer发送指定URL,最终获取flag。
2025-10-11 00:00:00
278
原创 CTF攻防世界WEB精选基础入门:disabled_button
<input>标签无法提交表单的常见原因包括:未包含在<form>内、type属性错误、disabled属性存在、必填项未填、表单验证失败或name属性问题。其中disabled属性有两种形式(带值或不带值),都会禁用元素,必须完全移除才能恢复功能。解题时可通过开发者工具直接删除disabled属性或修改其值为"true"来激活提交功能。
2025-10-10 17:39:57
239
原创 CTF攻防世界WEB精选基础入门:cookie
摘要:Cookie在CTF中常用于身份伪造、权限提升和会话劫持。常见手段包括修改用户身份字段、解码Base64加密信息、窃取会话Cookie等。解题时需检查响应头中的Cookie信息,可能存在flag或关键数据。例如通过查看网络响应标头而非源代码,可发现隐藏的flag信息。
2025-10-10 17:08:24
296
原创 CTF攻防世界WEB精选基础入门:backup
X老师忘记删除备份文件,需要找出备份文件获取flag。根据常见备份文件格式(如.git、.svn、.swp、.bak等)逐一测试,发现.bak后缀时浏览器自动下载文件,打开后成功获取flag。解题关键在于了解各类备份文件的命名规则和存储位置。
2025-10-07 22:36:08
506
原创 CTFshow萌新杂项详细解题攻略及学习笔记
这篇文章分享了多个CTF杂项题目的解题思路。通过md5解密、WinHex工具分析、正则表达式匹配、图片属性修改、伪加密处理等方法,成功破解了包含表白密码、银行卡密码、压缩包密码、隐藏flag等各类题目。解题过程涉及信息隐藏与提取、文件结构分析、编码转换等技巧,展示了CTF竞赛中常见的解题思路和工具使用方法。
2025-09-29 19:15:38
1015
原创 CTF攻防世界WEB精选基础入门:robots
这篇文章介绍了Robots协议的基本概念及其在CTF解题中的应用。Robots协议通过robots.txt文件指导搜索引擎爬虫的访问权限。在解题过程中,通过访问目标网站的robots.txt文件发现了隐藏的f1ag_1s_h3re.php文件,最终在该文件中获取到了flag。这展示了如何利用Robots协议来发现网站隐藏资源的方法。
2025-09-25 18:23:11
219
原创 CTF攻防世界WEB精选基础入门:get_post
HTTP请求方法考察,GET和POST是关键。通过靶场实践演示:首先拼接URL完成GET请求(/?a=1),然后使用HackBar插件发送POST请求(b=2),最终获取flag。该测试验证了两种基础HTTP方法的实际应用。 (字数:99)
2025-09-25 17:57:59
129
原创 创建者模式:建造者模式
抽象工厂 | 创建相关产品族(如不同主题UI组件)| `ThemeFactory.createButton()/createMenu()` || 简单工厂 | 产品类型固定且较少 | `LoggerFactory.create(type)` |System.out.println("正在使用数据库日志记录器记录日志");System.out.println("正在使用文件日志记录器记录日志");// 所有工厂必须能生产日志产品。
2025-09-22 19:36:33
529
原创 创建者模式:工厂方法模式
工厂方法模式是一种创建型设计模式,它通过定义创建对象的接口,让子类决定实例化哪个类。核心思想是将对象的创建延迟到子类,实现客户端代码与具体产品类的解耦。模式包含四个关键组件:抽象产品定义接口、具体产品实现接口、抽象工厂声明创建方法、具体工厂实现创建逻辑。该模式具有六大优势:解耦、支持开闭原则、可配置性强、职责清晰、易于测试和扩展性好。使用时需注意避免过度设计、循环依赖等问题,并可根据场景选择简单工厂、工厂方法或抽象工厂等不同实现方式。典型应用场景包括支付网关切换、数据库连接管理等需要灵活创建对象的场合。
2025-09-22 19:34:43
913
原创 创作者模式—单例设计模式
单例模式确保类仅有一个实例并提供全局访问点,适用于配置管理、连接池等场景。实现方式包括: 饿汉式(静态变量)- 简单线程安全但可能浪费资源 懒汉式(双重检查锁)- 延迟加载且高性能,需volatile防重排序 静态内部类 - 完美平衡延迟加载与线程安全 枚举式 - 终极防御方案,防反射和序列化破坏 最佳实践:优先枚举式,延迟加载用静态内部类,注意防御反射、序列化攻击和线程安全。性能对比显示枚举式和静态内部类最优。关键是根据场景选择实现方式,避免资源浪费和线程安全问题。
2025-09-22 19:31:10
607
原创 设计模式:里氏代换原则
摘要: 里氏代换原则(LSP)强调子类必须完全兼容父类的行为规范,确保在使用父类的地方无缝替换为子类对象时,程序功能不受影响。例如,父类“鸟”有“飞()”方法,子类“鸵鸟”若无法实现飞行则违反LSP;同样,正方形继承矩形时若强制宽高一致会破坏矩形独立设置宽高的行为。LSP的核心是“子承父业,规矩不变”,即子类可扩展功能但不可修改父类核心契约。遵守该原则能提升代码灵活性(支持开闭原则)并减少意外错误,反之则需重构继承关系。简言之,LSP是面向对象设计中“靠谱继承”的基石。 (注:摘要严格控制在150字内,提炼
2025-07-14 08:00:00
470
原创 设计模式:开闭原则
《开闭原则:像扩建房子一样优雅扩展系统》摘要 开闭原则(OCP)主张软件系统应像房屋建造一样:对修改关闭(不破坏核心结构),对扩展开放(灵活添加新功能)。通过抽象接口(预留门窗)和配置机制(水电接口),新功能可像搭积木般接入系统,而无需修改原有代码。例如图表系统通过抽象基类和配置文件,就能安全添加折线图等新图表类型。该原则使系统更稳定(核心逻辑不受影响)、更灵活(快速扩展)、更易维护(新旧代码分离),是构建健壮软件的关键设计思想。
2025-07-13 08:00:00
209
原创 设计模式:单一职责原则
只借铲子就行,不用把整个厨房搬过去。菜刀只管切得又快又好,锅只管导热均匀,铲子只管翻炒到位。这违反了 SRP,因为它干的事太多,变化原因也太多(数据库变了要改它,图表样式变了也要改它)。不行,你得把整个多功能刀都借出去,别人可能根本不需要其他功能。如果剪刀坏了,你要修理整个瑞士军刀,可能会影响其他功能,或者干脆就得换掉整把刀。它要负责的事情太多了。可能得动整个刀的结构,不小心就把螺丝刀改坏了。能开瓶盖、开罐头、拧螺丝、削水果、甚至有小剪刀和小锯子。菜刀钝了,磨菜刀就行,不用动锅和铲子。(专职的“接线员”)
2025-07-12 08:00:00
647
原创 设计模式:合成复用原则
摘要:合成复用原则提倡用"组合/聚合"代替继承,就像用现成零件组装玩具车而非雕刻整块木头。组合方式(Has-A)通过关联独立对象实现功能,比继承(Is-A)更灵活:零件可替换(低耦合)、易扩展(动态添加)、内部实现可隐藏(黑箱复用)。典型场景如数据库操作类应持有工具对象而非继承工具类,换数据库时只需替换成员对象而非修改类结构。该原则使代码像乐高积木一样模块化,提高可维护性和扩展性。
2025-07-11 08:00:00
637
原创 设计模式:依赖倒转原则
摘要:该代码展示了面向接口编程的依赖倒置原则。Computer类通过接口(HardDisk、Cpu、Memory)与底层组件交互,而非直接依赖具体实现类(XiJieHardDisk、IntelCpu、KingstonMemory)。当需要更换硬件时,只需提供新的接口实现类,无需修改Computer类。这种设计解耦了高层模块与底层模块,使系统更易于扩展和维护,符合"高层模块不应依赖低层模块,二者都应依赖抽象"的设计原则。
2025-07-10 08:00:00
540
原创 JAVA编程基础:反射
Java反射机制是程序在运行时动态获取类信息并操作类成员的能力。其核心是通过Class对象获取类的构造方法、属性和方法,实现动态创建对象、调用方法和访问属性(包括私有成员)。反射为框架开发提供了灵活性,但会带来性能开销和安全风险。典型应用包括对象实例化、方法调用和属性操作,常见于Spring等框架中。使用反射需权衡其动态性优势和性能、封装性等代价。
2025-07-09 09:00:00
1920
原创 JAVA编程基础:数据结构与算法
摘要:本文系统介绍了数据结构的基本概念、核心存储结构及Java实现。主要内容包括:1)数据结构的三要素(逻辑结构、存储结构、运算)及分类(线性表、树、图);2)链表、二叉树、栈、队列的节点设计与Java实现;3)ArrayList和LinkedList的底层实现与性能对比;4)HashMap的JDK7/8实现差异(数组+链表/红黑树)、扩容机制及重要参数;5)LinkedHashMap通过双向链表维护插入顺序的特性。文章还涉及HashSet等集合类的底层实现原理,为理解Java集合框架提供了理论基础。(14
2025-07-08 14:51:25
131
原创 JAVA编程基础:File类与IO流
Java文件操作与IO流摘要 Java中File类用于操作文件/目录,提供新建、删除、获取路径等方法,但不支持读写功能。读写需配合IO流实现,包括: 节点流:FileReader/Writer处理文本文件,FileInputStream/OutputStream处理非文本文件(也可复制文本文件) 处理流: 缓冲流(BufferedXXX)提升读写效率 转换流(InputStreamReader/Writer)解决字节与字符转换及乱码问题 对象流(ObjectXXX)实现序列化/反序列化 注意事项:操作需tr
2025-07-08 09:30:00
634
原创 JAVA编程基础:泛型
Java泛型专题摘要:本文介绍了泛型的基本概念和使用场景,包括集合(ArrayList、HashMap)和比较器(Comparable、Comparator)中的泛型应用。通过测试案例展示了使用泛型前后在类型安全和类型转换方面的差异,对比了非泛型集合需要强制类型转换而泛型集合直接获取指定类型的优势。同时讲解了泛型在继承关系中的特点,强调G<SuperA>与G<A>是并列关系而非继承关系。最后重点解析了通配符?的使用规则及其读写限制,包括? extends A和? super A两种限
2025-07-07 09:30:00
256
原创 JAVA编程基础:集合框架
本文总结了Java集合框架的核心内容。首先分析了数组存储数据的优缺点,指出其长度固定、操作受限等问题。接着介绍了集合框架两大体系:Collection(List有序可重复、Set无序不可重复)和Map(键值对存储)。重点讲解了List接口的ArrayList、LinkedList实现类区别,Set接口的HashSet、TreeSet特性,以及Map接口的HashMap、TreeMap使用场景。文章还详细说明了集合的常用操作方法(增删改查)、迭代器遍历机制、集合与数组转换,以及Properties配置文件的读
2025-07-06 09:30:00
849
原创 JAVA编程基础:常用类与基础API
String的两种定义方式:① 字面量的定义方式 String s = "hello" ② new 的方式:String s = new String("hello");② 重写Comparable接口中的compareTo(Object obj)方法,在此方法中指明比较类A的对象的大小的标准。在内存中创建的对象的个数。
2025-07-05 10:00:00
11323
原创 JAVA编程基础:多线程
如果线程的优先级相同,那么会随机选择一个(线程随机性),Java使用的为抢占式调度。不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁。> join(): 在线程a中通过线程b调用join(),意味着线程a进入阻塞状态,直到线程b执行结束,线程a才结束阻塞状态,继续执行。分时调度:所有线程`轮流使用` CPU 的使用权,并且平均分配每个线程占用 CPU 的时间。:占用部分资源的线程在进一步申请其他资源时,如果申请不到,就主动释放掉已经占用的资源。
2025-07-04 10:00:00
412
原创 JAVA编程基础:异常处理
Java异常处理摘要 异常是程序执行中的非正常情况,可能导致JVM停止。Java异常分为Error(严重错误)和Exception(可处理异常)。Exception又分为编译时异常(如IOException)和运行时异常(如NullPointerException)。 异常处理方式包括: try-catch-finally:捕获并处理异常,finally确保资源释放 throws:将异常抛给调用者处理 开发中应根据情况选择处理方式,涉及资源操作时使用try-catch-finally。可自定义异常类(继承E
2025-07-03 08:48:00
985
原创 JAVA编程基础:面向对象-高级
本文摘要:Java面向对象编程中的关键概念包括static关键字(修饰属性、方法等,实现类变量共享)、单例模式(饿汉式和懒汉式实现)、main方法(程序入口)、代码块(静态/非静态)、final(常量)、abstract(抽象类/方法)、interface(接口规范)、内部类、枚举类、注解以及包装类使用。重点讲解了static变量的共享特性、单例模式的线程安全性比较、自动装箱拆箱机制等核心知识点,并通过银行账户和Person类等示例代码演示了这些概念的实际应用。
2025-07-02 08:50:34
1749
原创 JAVA编程基础:面向对象-进阶
父类的引用指向子类的对象(声明是父类的执行是子类的对象)。过程上来说:子类调用构造器创建对象时,一定会直接或间接的调用其父类的构造器,以及父类的父类的构造器,...,直到调用到Object()的构造器。多态的好处:减少了大量的重载的方法的定义;如果子父类中出现了同名的属性,此时使用super.的方式,表明调用的是父类中声明的属性。this(形参列表)的方式,表示调用当前类中其他的重载的构造器。广义上的理解:子类对象的多态性、方法的重写;狭义上的理解:主要指的是子类对象的多态性主要指的是。
2025-06-30 08:30:00
867
原创 JAVA编程基础:面向对象-基础
本文摘要: 文章系统介绍了面向对象编程的核心概念,重点讲解了类与对象的区别、成员变量与局部变量的差异,以及方法的声明与重载规则。详细解析了Java内存结构(栈、堆、方法区)和对象的内存分配机制。深入探讨了封装性原则,包括四种权限修饰符的使用场景和JavaBean标准。此外,还涵盖了构造器的作用、实例变量赋值顺序以及递归方法的特点。通过"高内聚低耦合"的设计原则,阐述了如何合理设计类结构,为面向对象编程实践提供了理论指导。
2025-06-29 09:30:00
384
原创 JAVA基础:数组
本文介绍了Java数组的核心概念和使用方法。主要内容包括:数组作为有序数据容器的特点,一维和二维数组的声明、初始化及内存解析;常用数组操作如遍历、复制、反转、扩容/缩容;查找算法(顺序查找和二分查找)及排序算法(冒泡排序和快速排序);Arrays工具类的常用方法;以及数组常见异常处理。重点讲解了数组的基本操作与算法实现,并通过代码示例演示了杨辉三角、数组复制等典型应用场景。
2025-06-28 08:30:00
459
原创 JAVA编程基础:流程控制语句
在能使用switch-case的情况下,推荐使用switch-case,因为比if-else效率稍高switch(表达式){ case 常量1: //执行语句1 //break;② 开发中,如果一个具体问题既可以使用switch-case,又可以使用if-else的时候,推荐使用switch-case。直到遇到break或者执行完所有的case及default中的语句,退出当前的switch-case结构。② case 后都是跟的常量,使用表达式与这些常量做相等的判断,不能进行范围的判断。
2025-06-27 08:30:00
880
原创 Java编程基础:变量、数据类型与运算规则
测试运算符的使用1:算术运算符的使用+ - + - * / % (前)++ (后)++ (前)-- (后)-- +说明:此时的容量小或大,并非指占用的内存空间的大小,而是指表示数据的范围的大小。熟悉:二进制(以0B、0b开头)、十进制、八进制(以0开头)、十六进制(以0x或0X开头)的声明方式。3.规则:当容量小的变量与容量大的变量做运算时,结果自动转换为容量大的数据类型。String的认识:字符串。③ +=、 -=、*=、 /=、%= 操作,不会改变变量本身的数据类型。
2025-06-26 09:45:07
943
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1