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