HGAME 2019 WEB week2

本文深入探讨了PHP安全挑战,包括文件包含漏洞、MD5碰撞、URL解析差异及hash_mac函数漏洞,通过实例展示了如何利用特定技巧绕过安全检查,获取敏感信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.easy_php

在这里插入图片描述
题目的标题给出了提示,查看robots.txt
在这里插入图片描述
再查看http://118.24.25.25:9999/easyphp/img/index.php,得到源码。
在这里插入图片描述
由题目可知$img = $_GET['img'],我们需要传入一个名为img的变量,其中$img = str_replace('../', '', $img),会将$img中的../替换为空,这种替换方式可以用双写../....//进行绕过。接着include_once($img.".php")为我们解决问题提供了思路,我们可以利用文件包含漏洞进行任意文件读取。payolad:http://118.24.25.25:9999/easyphp/img/index.php?img=php://filter/read=convert.base64-encode/resource=....//flag

2.php trick

这道题结合了多种php函数的漏洞,由浅入深,学到了不少东西。
在这里插入图片描述

1.step1和step2要求str1不能等于str2但是md5值要相等,我们注意到md5($str1) != md5($str2)中用到的是!=我们可以找两个md5值开头两位是0e的字符串,利用科学记数法即可进行绕过。
2.step3和step4的要求和上面的类似,但是判断md5值时用到的是!==我们可以传入两个值不相同的数组进行绕过。
3.step5中的strpos($_SERVER['QUERY_STRING'], "H_game") !==false要求我们的url中不能存在H_game但我们的str5获取的变量名就是H_game,百度到了一个php的小特性。
在这里插入图片描述
因此我们只需要修改H_gameH.game即可进行绕过
step6:is_numeric($str5)要求str5不能为数字,可以利用传入数组进行绕过。
step7:$str5<9999999999要求str5大于9999999999,我们直接传入一个以科学计数法表示的数9e9即可。
step8: (string)$str5>0将str5字符串化后的值不能大于0,此时我们的str5已经是一个数组了,(string)$str5的返回值为Array,已经满足了条件。
step9和step10考察了php中parse_url()函数的作用解析url并返回其组成部分,这是我在网上找到的例子。
在这里插入图片描述
但是我们的目标是访问admin.php。要利用parse_url和curl对域名的解析差异,构造http://@118.24.3.214@www.baidu.com/admin.php即可满足需求
在这里插入图片描述
得到提示
在这里插入图片描述
将url修改为http://@127.0.0.1:80@www.baidu.com/admin.php得到源码
在这里插入图片描述
看到file_get_contents($filename),文件包含漏洞进行对flag.php的读取url=http://@127.0.0.1:80@www.baidu.com/admin.php/?filename=php://filter/read=convert.base64-encode/resource=flag.php
在这里插入图片描述

3.PHP Is The Best Language

在这里插入图片描述
首先以post方式设置变量$door$door作为明文,$secret作为密钥重新对$secert进行赋值。但是我们并不知道$secret的具体数值。
在这里插入图片描述
接着$gate也被明文为以post方式传入的$key,密钥为上文修改的$secret重新赋值,同样的我们还是不知道密钥的值具体是多少。因此$gate的值也不知道具体是多少。
在这里插入图片描述
但是我们传入的变量$gate需要和加密过的$gate的值相同。这个时候我们就需要利用hash_mac函数的一个漏洞,就是如果传入的明文为数组的时候,返回的值为NULL。也就是说我们传入的$door变量如果是一个数组,那么$secret变量的值也就被修改为了已知的NULL。
在当时做这道题时,接下来的if语句没能成功地进行绕过
在这里插入图片描述
在看完官方的wp之后才知道,存在一次md5加密后值开头为0e再次加密后md5值开头依旧是0e的的字符串(如7r4lGXCH2Ksu2JNT3BYM),这样就可以利用php弱类型相等进行绕过了,最后的payload为
在这里插入图片描述
在这里插入图片描述

### HGAME 2022 Week1 的网络流量分析 关于 HGAME 2022 Week1 中涉及的网络流量分析相关内容,虽然官方并未提供详细的流量包文件供下载[^1],但从参赛者的经验分享来看,Week1 阶段确实包含了 Web 和 Misc 类型的题目,这些题目可能涉及到基础的网络通信协议解析以及抓包分析技能[^2]。 在网络流量分析方面,通常会使用工具如 Wireshark 或 tcpdump 来捕获和分析 HTTP/HTTPS 请求、DNS 查询或其他类型的网络交互行为。如果比赛中存在需要通过流量分析解密 Flag 的场景,则可以推测其设计思路如下: #### 工具推荐 以下是常用的网络数据分析工具及其功能概述: - **Wireshark**: 图形化界面支持过滤特定协议(HTTP, DNS 等),并能追踪 TCP 流量。 - **tcpdump**: 命令行方式快速获取指定条件下的数据包日志。 #### 技术要点 对于潜在的流量分析挑战,以下几点可能是关键的技术方向: 1. 使用 `tshark` 提取 HTTP POST 请求中的负载字段,查找隐藏的信息片段。 ```bash tshark -r capture.pcapng -Y 'http.request.method == "POST"' -T fields -e data.text ``` 2. 如果加密机制被引入到流量中,尝试识别使用的算法并通过已知明文攻击恢复原始消息。 尽管目前没有具体提及 HGAME 2022 Week1 是否包含专门针对流量分析的任务,但基于 CTF 比赛的一般模式,上述方法论具有较高的适用价值。 ```python import re def extract_payloads(pcap_file_path): """模拟提取PCAP文件内的有效载荷""" with open(pcap_file_path, 'rb') as f: content = f.read() payloads = [] pattern = rb'(?<=Payload: ).*?(?=\n\n)' matches = re.findall(pattern, content) for match in matches: decoded_match = match.decode('utf-8', errors='ignore') payloads.append(decoded_match.strip()) return payloads ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值