Python请求;登录到DVWA
我正试图登录到这个该死的易受攻击的Web应用程序,因为我试图编写我的第一个漏洞。然而,第一个障碍是登录页面。没有有效的登录名,我无法访问其他目录 我试图分析我必须发送的标题等,但我似乎仍然无法使登录工作Python请求;登录到DVWA,python,python-3.x,web,python-requests,Python,Python 3.x,Web,Python Requests,我正试图登录到这个该死的易受攻击的Web应用程序,因为我试图编写我的第一个漏洞。然而,第一个障碍是登录页面。没有有效的登录名,我无法访问其他目录 我试图分析我必须发送的标题等,但我似乎仍然无法使登录工作 POST /dvwa/login.php HTTP/1.1 Host: 192.168.26.129 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: Mozilla/
POST /dvwa/login.php HTTP/1.1
Host: 192.168.26.129
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://192.168.26.129/dvwa/login.php
Cookie: security=high; PHPSESSID=c4bb8820be21ea83e6545eff0a2cb53b
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 44
username=admin&password=password&Login=Login
当我尝试使用浏览器登录时,这就是burp的全部请求
import requests
payload = {
'username': 'admin',
'password': 'password',
'Login': 'Login'
}
headers = {
'Host': '192.168.26.129',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
'Accept': 'Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0',
'Accept-Language': 'en-US,en;q=0.5',
'Referer': 'http://192.168.26.129/dvwa/login.php',
'Connection': 'close',
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': '44'
}
cookies = dict(security='high', PHPSESSID='c4bb8820be21ea83e6545eff0a2cb53b')
with requests.Session() as c:
p = c.post('http://192.168.26.129/dvwa/login.php', headers=headers, data=payload, cookies=cookies)
print(p)
r = c.get('http://192.168.26.129/dvwa/vulnerabilities/exec')
print(r.text)
这就是我尝试使用python请求登录的方式。
我两次得到200 OK,但它总是返回登录屏幕的HTML代码
有人能告诉我我的错误是什么吗?如果您有有效的cookie,您可以将它们添加到会话中
cookies = dict(security='high', PHPSESSID='o9m7jgcspe02h9rffj9g7cv0t5')
with requests.Session() as c:
c.cookies.update(cookies)
现在您可以访问/dvwa/vulnerabiles/exec
如果您没有cookie,则可以使用登录页面获取它们。
在登录表单中,您必须提交的隐藏输入字段中有一个令牌。您可以使用或
re
获取其值
import requests
import re
payload = {
'username': 'admin',
'password': 'password',
'Login': 'Login'
}
with requests.Session() as c:
r = c.get('http://127.0.0.1/dvwa/login.php')
token = re.search("user_token'\s*value='(.*?)'", r.text).group(1)
payload['user_token'] = token
p = c.post('http://127.0.0.1/dvwa/login.php', data=payload)
r = c.get('http://127.0.0.1/dvwa/vulnerabilities/exec')
print(r.text)
我使用re
是因为它是一个标准库,但最好使用bs4
进行html解析。如果安装了bs4
,则可以使用此选择器获取令牌:“输入[name=user\u令牌]”