fuzz模糊测试(文件上传为例)

fuzz模糊测试

fuzz介绍

Fuzz模糊测试是一种软件测试方法,旨在发现应用程序或系统中的漏洞和错误。它通过向应用程序输入大量随机、无效或异常的数据来测试其稳定性和安全性。Fuzz测试通常用于测试网络协议、文件格式、API接口和其他输入接口,以发现潜在的安全漏洞和错误。

Fuzz测试的基本原理是通过向目标应用程序输入大量的随机或异常数据,以触发潜在的漏洞和错误。这些数据可能包括无效的输入、边界条件、格式错误、特殊字符等。通过不断地输入这些数据,测试人员可以观察应用程序的行为,并检测是否出现了异常情况,如崩溃、内存泄漏、拒绝服务攻击等。

Fuzz测试通常分为以下几个步骤:

  1. 选择目标:确定要测试的目标应用程序或系统,例如网络协议、文件格式、API接口等。
  2. 构建fuzz测试工具:编写或使用现有的fuzz测试工具,用于生成和发送大量的随机或异常数据。
  3. 运行fuzz测试:使用fuzz测试工具向目标应用程序输入大量的随机或异常数据,观察其行为并记录任何异常情况。
  4. 分析结果:分析fuzz测试的结果,发现潜在的漏洞和错误,并向开发团队报告这些问题。

Fuzz测试的优点包括可以发现一些传统测试方法无法发现的漏洞和错误,测试覆盖范围广,可以有效地发现潜在的安全问题。然而,Fuzz测试也存在一些缺点,如测试效率低、需要大量的时间和资源、难以模拟真实环境等。

fuzz举例

  • 测试文件上传靶场黑名单

以第四关为例

此处为网站源码黑名单

$deny_ext = array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf");

当不知道黑名单时,可以输入无效数据看看返回结果

后缀名为php时,文件不允许上传

image-20231120173844805

当修改为未知数据时,发现可以上传成功

image-20231120173918095

将包发给intruder,然后将文件名添加标记

image-20231120174927082

添加测试的字典

如图以下长度5399的都为上传成功的,剩下的长度不一致的为禁止上传和上传错误的

image-20231120191957236

经过筛选过后即可得到黑名单

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
洗衣机的洗涤时间可以使用模糊推理来实现。下面是使用Python中的scikit-fuzzy库实现的例子: ```python import numpy as np import skfuzzy as fuzz from skfuzzy import control as ctrl # 定义论域 sludge = ctrl.Antecedent(np.arange(0, 101, 1), 'sludge') oil = ctrl.Antecedent(np.arange(0, 101, 1), 'oil') wash_time = ctrl.Consequent(np.arange(0, 121, 1), 'wash_time') # 定义隶属度函数 sludge['SD'] = fuzz.trimf(sludge.universe, [0, 0, 50]) sludge['MD'] = fuzz.trimf(sludge.universe, [0, 50, 100]) sludge['LD'] = fuzz.trimf(sludge.universe, [50, 100, 100]) oil['NG'] = fuzz.trimf(oil.universe, [0, 0, 50]) oil['MG'] = fuzz.trimf(oil.universe, [0, 50, 100]) oil['LG'] = fuzz.trimf(oil.universe, [50, 100, 100]) wash_time['VS'] = fuzz.trimf(wash_time.universe, [0, 0, 30]) wash_time['S'] = fuzz.trimf(wash_time.universe, [0, 30, 60]) wash_time['M'] = fuzz.trimf(wash_time.universe, [30, 60, 90]) wash_time['L'] = fuzz.trimf(wash_time.universe, [60, 90, 120]) wash_time['VL'] = fuzz.trimf(wash_time.universe, [90, 120, 120]) # 定义规则 rule1 = ctrl.Rule(sludge['SD'] & oil['NG'], wash_time['S']) rule2 = ctrl.Rule(sludge['SD'] & oil['MG'], wash_time['M']) rule3 = ctrl.Rule(sludge['SD'] & oil['LG'], wash_time['L']) rule4 = ctrl.Rule(sludge['MD'] & oil['NG'], wash_time['S']) rule5 = ctrl.Rule(sludge['MD'] & oil['MG'], wash_time['M']) rule6 = ctrl.Rule(sludge['MD'] & oil['LG'], wash_time['L']) rule7 = ctrl.Rule(sludge['LD'] & oil['NG'], wash_time['M']) rule8 = ctrl.Rule(sludge['LD'] & oil['MG'], wash_time['L']) rule9 = ctrl.Rule(sludge['LD'] & oil['LG'], wash_time['VL']) # 定义控制系统 washing_ctrl = ctrl.ControlSystem([rule1, rule2, rule3, rule4, rule5, rule6, rule7, rule8, rule9]) washing = ctrl.ControlSystemSimulation(washing_ctrl) # 输入污泥和油脂的值 washing.input['sludge'] = 30 washing.input['oil'] = 70 # 运行控制系统 washing.compute() # 输出洗涤时间 print(washing.output['wash_time']) # 输出洗涤时间隶属度函数 wash_time.view(sim=washing) ``` 上述代码中,我们首先定义了论域,然后定义了隶属度函数,接着定义了规则,最后定义了控制系统。在输入污泥和油脂的值后,我们运行控制系统并输出洗涤时间。同时,我们还可以通过`wash_time.view(sim=washing)`来查看洗涤时间的隶属度函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值