我试图登录到该死的易受攻击的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代码。
有人能告诉我我的错误是什么吗?
发布于 2018-07-17 14:50:09
如果您有有效的cookie,可以将它们添加到会话中,
cookies = dict(security='high', PHPSESSID='o9m7jgcspe02h9rffj9g7cv0t5')
with requests.Session() as c:
c.cookies.update(cookies)现在您可以访问/dvwa/vulnerabilities/exec了。
如果您没有cookie,那么您可以使用登录页面获取它们。
在登录表单中,必须提交的隐藏输入字段中有令牌。您可以使用bs4或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,可以使用以下选择器获得令牌:'input[name=user_token]'。
发布于 2022-05-23 15:08:44
使用docker时,请确保首先创建数据库。
发布于 2022-08-30 18:35:51
我刚刚经历过这件事(我实际上是用Ansible做的,但是步骤是一样的)。当您第一次访问login.php时,它将在正文文本中为您提供一个user_token (如前所述),以及2个cookie值、PHPSESSID和安全性。您需要提交所有这些来登录。然后,您可以在后续请求中继续使用cookie值。
这些步骤是:
以上答案之间的主要区别在于,您需要这样做:
p = c.post('http://127.0.0.1/dvwa/login.php', cookies=cookies, data=payload)这里有一个python解决方案:
import requests
dvwa_ip = "192.168.1.86"
resp = requests.get(f"http://{dvwa_ip}/DVWA/login.php")
print(resp.text)
# Get the session id from cookies
phpsessid = resp.cookies.get('PHPSESSID')
# Find the html containing user_token in the page text
user_token_html = [x for x in resp.text.split('\n') if 'user_token' in x]
user_token = [x for x in user_token_html[0].split(' ') if 'value' in x]
# user_token is now ["value='2fc5744b8190bae45673e6b91b825178'"], get value using exec
value=''
exec(user_token[0])
# manually set security low as this defaults to impossible
cookies_json = {
'PHPSESSID': phpsessid,
'security': 'low'
}
body = {
'username': 'admin',
'password': 'password',
'Login': 'Login',
'user_token': value
}
post_resp = requests.post(f"http://{dvwa_ip}/DVWA/login.php", data=body, cookies=cookies_json)
print(post_resp.text) # prints out the "logged in" page (actually index.php)
print("OK") if "Welcome to Damn Vulnerable Web Application" in post_resp.text else print("ERROR")为了完整起见,这里是我的不可接受的解决方案:
- name: "Browse to DVWA login screen to get the user_token from the content and the cookies"
uri:
url: "http://{{dvwa_ip}}/DVWA/login.php"
return_content: yes
method: GET
register: login_form
# Get the user_token from the page content - ugly but works
- set_fact:
user_token: "{{ login_form.content.split(\"name='user_token'\")[1].split('/>')[0].split('=')[1].replace(\"'\",'').replace(' ','') }}"
- name: Show user_token
debug:
var: user_token
- name: "Login to DVWA {{ dvwa_ip }} using the username, password, Login, user_token and the Cookie"
uri:
# index.php will redirect to login.php
url: "http://{{dvwa_ip}}/DVWA/login.php"
return_content: yes
follow_redirects: all
method: POST
body_format: form-urlencoded
body:
username: admin
password: password
Login: Login
user_token: "{{ user_token }}"
headers:
Cookie: "{{ login_form.cookies_string }}"
status_code: [ 200, 302 ]
register: login
failed_when: "'Welcome to Damn Vulnerable Web Application!' is not in login.content"
- name: "Do SQL Injection"
command: "sqlmap -u \"http://{{ dvwa_ip }}/DVWA/vulnerabilities/sqli_blind/?id=2&Submit=Submit#\" --cookie=\"{{ login_form.cookies_string }}\" --dbs --batch --flush-session"
ignore_errors: true
register: sqlmap_outputhttps://stackoverflow.com/questions/51381302
复制相似问题