Python请求;登录到DVWA

时间:2018-07-17 12:22:57

标签: 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/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代码。

有人可以告诉我我的错误是什么吗?

1 个答案:

答案 0 :(得分:0)

如果您有有效的Cookie,可以将其添加到会话中,

void foo ( void ) {
    vfoo("");
}

,现在您可以访问cookies = dict(security='high', PHPSESSID='o9m7jgcspe02h9rffj9g7cv0t5') with requests.Session() as c: c.cookies.update(cookies)


如果您没有Cookie,则可以使用登录页面来获取它们。
在登录表单中,您必须提交一个隐藏的输入字段中的令牌。您可以使用bs4/dvwa/vulnerabilities/exec获得其值。

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进行html解析。如果您安装了bs4,则可以使用以下选择器获取令牌:bs4