为什么我在python字符串中得到反斜杠

时间:2017-07-14 16:17:40

标签: python sql-injection

我正在学习盲sql注入。这是我的脚本的一部分:

...
datas = {"username":"admin","password":"\'or pass like \"x%\" --"}
res = requests.post(url,data=datas).content
...

"password":之后的字符串应该以单引号开头,所以在打印时我希望有类似''or pass like "x%" --'的内容(实际上我不确定看到这是否正常,python显然会将双引号更改为单引号那些)。但我得到'\'or pass like "x%" --'

1 个答案:

答案 0 :(得分:3)

当您在python中编写字符串时,您可以选择"write them with double quotes"'write them with single quotes'。您只需要转义与您用于字符串的引号相匹配的引号。所以,'This "is" a valid string',但要将这些双引号更改为单引号,'You \'need\' to do this'。因此,在你的字符串中,你正确地转义双引号,因为你有一个双引号字符串,但你不需要转义单引号。

但是,没关系,因为\'仍然被python正确解释;它只是将其打印为转义字符,因此您知道它是字符'而不是字符串的结尾。

>>> "\'\""
'\'"'
>>> print("\'\"")
'"