我正尝试登录该死的易受攻击的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代码。
有人可以告诉我我的错误是什么吗?
答案 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
。