2017-07-14 59 views
0

我正在學習盲目的sql注入。這是我的腳本的一部分:爲什麼我在python字符串中得到一個反斜槓

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

"password":後,該字符串應該用單引號開始,所以在印刷時,我希望像''or pass like "x%" --'(其實我不知道是否看到這將是OK,蟒蛇顯然改變雙引號到單個)。但我得到'\'or pass like "x%" --'

+2

該字符串不包含反斜槓。該字符串的*'repr'表示*包含一個反斜槓,這與您需要在產生該字符串的原始字符串文字中放置反斜槓的原因大致相同;一個字符串的'repr'表示應該是一個字符串字面值來重現字符串。 – user2357112

+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("\'\"") 
'" 
相關問題