mirror of
https://github.com/chainreactors/spray.git
synced 2025-09-15 19:50:18 +00:00
update README.md
This commit is contained in:
parent
da1984f224
commit
0ef16ab595
61
README.md
61
README.md
@ -105,6 +105,7 @@
|
||||
mask生成阶段的函数
|
||||
1. `--suffix` 在字典后面添加后缀, 可添加多个, 与原有的字典组成笛卡尔积
|
||||
2. `--prefix` 在字典前面添加前缀, 可添加多个, 与原有的字典组成笛卡尔积
|
||||
3. `-e`/`--extension` 添加拓展名, 逗号分割
|
||||
|
||||
rule阶段的函数
|
||||
1. `-L`/`--lowercase` 将字典中的所有字母转换为小写
|
||||
@ -112,7 +113,6 @@ rule阶段的函数
|
||||
3. `--replace` 替换字典中的字符, 例如`--replace aaa=bbb` 将字典中的a替换为b, 可以添加多个`--replace`
|
||||
4. `--remove-extension` 删除字典中的文件扩展名, 逗号分割
|
||||
5. `--exclude-extension` 排除字典中的文件扩展名, 逗号分割
|
||||
6. `-e`/`--extension` 添加拓展名, 逗号分割
|
||||
|
||||
### 字典生成器的优先级
|
||||
|
||||
@ -229,6 +229,65 @@ type Baseline struct {
|
||||
|
||||
spray默认输出到终端的格式是human-like文本, 输出到文件的格式是json格式, 可以通过`-o`参数指定输出格式, 类似gogo的-o参数, 可以指定如`-o url,status`这样的自定义格式.
|
||||
|
||||
## 高级用法
|
||||
|
||||
### 手动配置过滤器
|
||||
|
||||
假设一个功能为api的站点, 他通过全局的错误处理将返回值统一改成200/405.
|
||||
|
||||
在spray中, 200是白名单状态码, 会跳过precompare, 直接到智能过滤的第二步, 开始内容的匹配. 如果内存中存在例如时间戳之类的随机数, 还会到第三步模糊过滤.
|
||||
|
||||
而405状态码则输出没有任何配置的状态码, 返回结果大概率会能到模糊过滤中, 如果405与200差异较小. 这种情况下就需要手动修改过滤规则了.
|
||||
|
||||
spray中修改过滤规则有很多中方式, 以这个例子进行简单介绍不同方式之间的差异.
|
||||
|
||||
**方法1: 添加参数`--black-status 405`**
|
||||
这种方式较为暴力, 如果代码中明确404页面的状态码被修改成405, 可以之间在precompare阶段过滤.
|
||||
|
||||
如果405页面的依旧有可能存在有价值的信息, 则不推荐使用这种方式.
|
||||
|
||||
**方法2: 添加参数`--fuzzy-status 405`**
|
||||
|
||||
这种方法是比较推荐的, 他只会微调智能过滤的逻辑, 随机目录的405状态码将会加入到基线中, 如果其他请求也遇到了几乎相同的405页面, 则可以认为是无效数据过滤掉.
|
||||
|
||||
这种微调可以保留智能过滤的全部功能, 并且不会有性能损耗.
|
||||
|
||||
**方法3: 使用表达式匹配`--match current.Status != 405`**
|
||||
|
||||
--match将会重载默认的智能过滤的全部逻辑. 也就是说, 智能过滤的123阶段都会跳过, 取而代之的是这个表达式.
|
||||
|
||||
这个表达式表示, 所有状态码不等于405的页面都会输出.
|
||||
|
||||
表达式的性能并不好, 如果是超大规模的爆破, 并不推荐使用.
|
||||
|
||||
**方法4: 使用表达式过滤`--filter current.Status == 405`**
|
||||
|
||||
--filter与--match的区别在于, --filter作用于智能过滤或--match的下一阶段. 通过智能过滤或者--match的结果将会由--filter进行二次过滤.
|
||||
|
||||
也就是说, 如果只有--filter, 那么智能过滤依旧生效, 并且可以过滤掉状态码为405的请求.
|
||||
|
||||
### 断点续传
|
||||
|
||||
spray支持断点续传, 可以通过`--resume-from`参数指定断点文件. 通过断点文件中记录的数据恢复进度.
|
||||
|
||||
为了更好的支持断点续传, spray监听了ctrl+c信号, 如果通过ctrl+c取消任务, 所有完成的或没完成的数据都会保存到stat结尾的文件中.
|
||||
|
||||
所以建议非必要情况不要使用kill -9 结束spray
|
||||
|
||||
另外, 如果使用`--resume-from`依旧没有完成任务, ctrl+c或者因为被ban后自动退出. 都会重写当前的stat文件更新进度, 可以不断的接着上一次的任务继续.
|
||||
|
||||
断点续传支持比原来更为自由的目录配置. 每个任务都可以拥有独立的-w/-r/-d配置. 因此某些特殊情况下要进行批量操作, 可以通过脚本去构造对应的stat文件, 实现更加自由的任务配置.
|
||||
|
||||
### 递归
|
||||
spray并不鼓励使用递归, 因为spray的定位是批量从反代/cdn中发现隐形资产. 不管是因为批量, 还是因为反代/cdn, 99.9的情况都用不到递归.
|
||||
|
||||
但为了兼容某些极为罕见的情况, spray依旧保留了递归的功能.
|
||||
|
||||
默认递归为关闭状态, 可以使用`--depth 2`选择递归深度开启递归模式.
|
||||
|
||||
默认的递归规则为`current.IsDir()`, 即所有的目录(结尾为/的结果)都会被递归.
|
||||
|
||||
也可以通过--recursive手动选择递归规则. 例如`--recursive current.IsDir() && current.Status == 403`表示, 递归所有状态码为403的有效目录.
|
||||
## TODO
|
||||
|
||||
1. [x] fuzzyequal
|
||||
|
Loading…
x
Reference in New Issue
Block a user