Skip to content

Commit 0a7fa5d

Browse files
committed
Fix python test cases for in-depth escaping scenario
1 parent 24847f2 commit 0a7fa5d

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

src/targets/python/helpers.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,12 @@ module.exports = {
6262
case '[object Object]': {
6363
const keyValuePairs = []
6464
for (const k in value) {
65-
keyValuePairs.push(util.format('"%s": %s', k, this.literalRepresentation(value[k], opts, indentLevel)))
65+
keyValuePairs.push(
66+
util.format('%s: %s',
67+
this.literalRepresentation(k, opts, indentLevel),
68+
this.literalRepresentation(value[k], opts, indentLevel)
69+
)
70+
)
6671
}
6772
return concatValues('object', keyValuePairs, opts.pretty && keyValuePairs.length > 1, opts.indent, indentLevel)
6873
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import requests
2+
3+
url = "http://example.test/%27%22%60$(%(%%7B%7B%7B/0%s//"
4+
5+
querystring = {
6+
"'": "squote-key-test",
7+
"squote-value-test": "'",
8+
"\"": "dquote-key-test",
9+
"dquote-value-test": "\"",
10+
"`": "backtick-key-test",
11+
"backtick-value-test": "`",
12+
"$(": "dollar-parenthesis-key-test",
13+
"dollar-parenthesis-value-test": "$(",
14+
"#{": "hash-brace-key-test",
15+
"hash-brace-value-test": "#{",
16+
"%(": "percent-parenthesis-key-test",
17+
"percent-parenthesis-value-test": "%(",
18+
"%{": "percent-brace-key-test",
19+
"percent-brace-value-test": "%{",
20+
"{{": "double-brace-key-test",
21+
"double-brace-value-test": "{{",
22+
"\\0": "null-key-test",
23+
"null-value-test": "\\0",
24+
"%s": "string-fmt-key-test",
25+
"string-fmt-value-test": "%s",
26+
"\\": "slash-key-test",
27+
"slash-value-test": "\\"
28+
}
29+
30+
payload = "' \" ` $( #{ %( %{ {{ \\0 %s \\"
31+
headers = {
32+
"squote-value-test": "'",
33+
"dquote-value-test": "\"",
34+
"backtick-value-test": "`",
35+
"dollar-parenthesis-value-test": "$(",
36+
"hash-brace-value-test": "#{",
37+
"percent-parenthesis-value-test": "%(",
38+
"percent-brace-value-test": "%{",
39+
"double-brace-value-test": "{{",
40+
"null-value-test": "\\0",
41+
"string-fmt-value-test": "%s",
42+
"slash-value-test": "\\"
43+
}
44+
45+
response = requests.post(url, data=payload, headers=headers, params=querystring)
46+
47+
print(response.text)

test/targets.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ const skipMe = {
4444
clojure: {
4545
clj_http: ['jsonObj-null-value', 'jsonObj-multiline']
4646
},
47-
python: {
48-
requests: ['malicious']
49-
},
5047
r: {
5148
httr: ['malicious']
5249
},

0 commit comments

Comments
 (0)