You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Portswigger & other web theory/Server side/API/GraphQL.md
+15Lines changed: 15 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,6 @@
1
1
2
+
Burp Extensions: GraphQL Raider
3
+
2
4
GraphQL query should optionally includes the `query` operation type for reading operations or `mutation` for modifying operations and arbitrary query name. Mutations are always require input as an argument, meanwhile in queries it can be used to catch up a specific object instead of a group.
Pay attention to how input is provided. Such notation allows you to bruteforce object variables.
53
+
54
+
#### Language specials
55
+
56
+
`human(id: "1000")` <- this is called inline object literal. Passing object literals inline is not directly allowed for custom input types (i.e. InputObj above).
57
+
58
+
Passing variables to fragments:
59
+
60
+
```
61
+
query HeroComparison($first: Int = 3) { <— notice "="
62
+
leftComparison: hero(episode: EMPIRE) {
63
+
...comparisonFields
64
+
}
65
+
```
51
66
#### Other ways to obtain valid queries
52
67
53
68
Inspect JavaScript files (even the minified ones!) to find any valid GraphQL queries
-**Envelope:** Identifies the XML documents, has a name space and encoding details.
5
+
-**Header:** Has header information like content type and character set etc.
6
+
-**Body:** Contains the request and response information.
7
+
-**Fault:** Errors and status information.
8
+
9
+
Each HTTP request can contain a header called `SOAP-Action`, which is used to perform an operation defined in its content. It is another entry point for an attacker.
0 commit comments