Skip to content

Commit

Permalink
[change] 一些调整
Browse files Browse the repository at this point in the history
  • Loading branch information
Jarcis-cy committed Nov 1, 2023
1 parent 88e00a0 commit 8100ab8
Show file tree
Hide file tree
Showing 5 changed files with 131 additions and 227 deletions.
14 changes: 5 additions & 9 deletions guide/_sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
- [**YAML格式介绍**](/guide/yaml/yaml_format.md)
- [**YAML插件的基本构成**](/guide/yaml/yaml_script_v2.md)
- [**YAML插件的运行逻辑**](/guide/yaml/yaml_run_logic.md)
- **高级用法**
- **参数详解**

- [**自定义变量 - set**](/guide/skill/set.md)
- [**全局变量载荷 - payload**](/guide/skill/payload.md)
- [**扫描路径 - path**](/guide/skill/path.md)
- [**自定义变量 - set**](/guide/hiq/set.md)
- [**全局变量载荷 - payload**](/guide/hiq/payloads.md)
- [**漏洞规则部分 - rules**](/guide/hiq/rules.md)
- [**信息部分 - detail**](/guide/hiq/details.md)
- [**反连平台 - reverse**](/guide/skill/reverse.md)
- [**转义的各类问题**](/guide/skill/escape.md)

Expand All @@ -28,11 +29,6 @@
- **高质量POC规范**

- [**简述**](/guide/hiq/summary.md)
- **脚本通用部分**
- [set(变量)](/guide/hiq/set.md)
- [payloads(optional)](/guide/hiq/payloads.md)
- [rules(漏洞规则部分)](/guide/hiq/rules.md)
- [detail(信息部分)](/guide/hiq/details.md)
- **漏洞检测部分**
- [未授权访问](/guide/hiq/unauth.md)
- [目录穿越/文件读取](/guide/hiq/path_traversal.md)
Expand Down
126 changes: 126 additions & 0 deletions guide/hiq/set.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,3 +130,129 @@ expression: rr0() && rr1()
这条规则相比之前的那条似乎规则更强,发出的两个随机数在两个不同的请求中,没有交集的存在,很难发生误报。但是此时难得一见的事情发生了,r1和r2的随机值竟然相等,且在请求rr1时,会将请求的文件名称打印在页面中,那么此时恰好匹配到r2,发生了误报的现象
那么,对于这种情况,这里要求在使用同一个随机函数时,不同变量的随机范围一定要完全不同,相互之间不存在交集
### 变量间的引用
```yaml
set:
s1: randomLowercase(10)
base64s1: base64(s1)
s2: base64s1 + "AAA"
```
在上述的例子中,我们定义了三个变量,其中 `s2` 的值是 `base64s1` 的值加上 `AAA`。由此可知,在set中,引用一个变量的值,不需要使用`{{}}`
将变量包裹起来,直接使用变量名称即可。从这个规则我们也可以引申出,在expression、output中,引用变量的值,也不需要使用`{{}}`将变量包裹起来,直接使用变量名称即可。

### 定义字符串的方式

在定义字符串的时候,有三种方式,如下所示:
```yaml
name: poc-yaml-test
transport: http
set:
s1: string("hello world")
s2: |
"hello world"
s3: '"hello world"'
rules:
r0:
request:
method: POST
path: /
follow_redirects: false
headers:
Content-Type: text/xml
body: |
{{s1}} + {{s2}} + {{s3}}
expression: response.status == 200
expression: r0()
detail:
author: test
```
发出的请求如下:
```HTTP
POST / HTTP/1.1
Host: docs.xray.cool
Content-Length: 40
Content-Type: text/xml
hello world + hello world + hello world
```
可以发现三种形式都能够正常输出字符串,但是如果只使用单引号或者双引号作为开头,将会引起加载错误,比如:
```yaml
set:
s1: "hello world"
s2: 'hello world'
```
使用这样的写法就将加载失败。

## 三目运算符的使用方式

### 介绍

在许多编程语言中,三目运算符(也称为条件运算符)是一种简洁的表达条件逻辑的方式。在 CEL(Common Expression Language)中,三目运算符也是一种常用的表达式,其语法如下:
```yaml
条件表达式 ? 表达式1 : 表达式2
```
三目运算符的工作原理是,当条件表达式的结果为 true 时,整个表达式的值等于表达式1的值;当条件表达式的结果为 false 时,整个表达式的值等于表达式2的值。

例如,在 CEL 表达式中,你可以这样使用三目运算符:
```yaml
age >= 18 ? "Adult" : "Minor"
```
在这个例子中,如果 age 大于或等于 18,表达式的值将为 "Adult",否则将为 "Minor"。这与以下的 if-else 语句相似:
```go
if age >= 18 {
return "Adult"
} else {
return "Minor"
}
```

### 案例

<!-- tabs:start -->

#### **mysql指纹匹配(截取)**

```yaml
name: fingerprint-yaml-tcp-mysql
manual: false
transport: tcp
set:
GenericLines: b"\r\n\r\n"
payloads:
payloads:
l:
re: '"(?s)^.\\0\\0\\0\\xffj\\x04''[\\d.]+'' .* MySQL"'
m:
re: '"(?s)^.\\0\\0\\0\\x0a(?P<version>5\\.[-_~.+:\\w]+MariaDB-[-_~.+:\\w]+~bionic)\\0"'
n:
re: '"(?s)^.\\0\\0\\0\\x0a(?P<version>[\\w._-]+)\\0............\\0\\x5f\\xd3\\x2d\\x02\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0............\\0$"'
r:
re: '"(?s)^.\\0\\0\\0\\x0a(?P<version>3\\.[-_~.+\\w]+)\\0...\\0"'
s:
re: '"(?s)^.\\0\\0\\0\\x0a(?P<version>4\\.[-_~.+\\w]+)\\0"'
rules:
r1:
request:
cache: true
content: '{{GenericLines}}'
expression: re.bmatches(response.raw)
output:
result: re.bsubmatch(response.raw)
osname: |
re.contains("bionic") ? "Linux" : ""
version: result["version"]
expression: r1()
detail:
fingerprint:
infos:
- type: system_bin
name: mysql
version: '{{version}}'
- type: operating_system
name: '{{osname}}'
```

<!-- tabs:end -->
53 changes: 0 additions & 53 deletions guide/skill/path.md

This file was deleted.

32 changes: 0 additions & 32 deletions guide/skill/payload.md

This file was deleted.

133 changes: 0 additions & 133 deletions guide/skill/set.md

This file was deleted.

0 comments on commit 8100ab8

Please sign in to comment.