DVWA 靶场的通关
刚建立和使用
输入
http://dvwa:8898/setup.php //进入
用户名 密码
dvwa
你自己设计的
想要进入数据库
点击creat
用户名 密码
admin
password
Attack type
Sniper模式
在Sniper模式下,Payload字典用于逐个替换请求中标记的位置。例如,如果一个表单需要用户名和密码,Sniper会依次尝试不同的用户名和密码组合,直到找到有效的登录凭证或确定该字段不存在漏洞1。
Battering Ram模式
Battering Ram模式则是在所有标记位置插入相同的Payload。这种模式适用于需要在多个地方输入相同数据的场景,如验证码或会话令牌验证1。
Pitchfork模式
Pitchfork模式通过多个Payload字典组合使用,每个字典针对不同的输入位置。这种方式适用于需要关联输入的场景,例如,用户名列表和对应的密码列表需要一一匹配1。
Cluster Bomb模式
Cluster Bomb模式生成所有可能的组合,适用于完全独立的多参数组合爆破。这种模式可以有效地测试各种复杂的输入组合,帮助发现潜在的漏洞1。
payload
字典是一些预设的参数集合 用于构造和发送攻击请求 这些参数可以是用户名 密码 url参数等 至于这些参数那里来的可以从一些现有的字典获取(github)
token值
- 服务器随机生成的随机字符串 用于验证请求的合法性 每次用户访问页面时 服务器会生成一个新的token (他是有期限的 过期了需重新获得)
登录场景:用户提交用户名和密码时,还需附带服务器返回的Token值。
防御机制
:
- 防止CSRF攻击:攻击者无法伪造包含有效Token的请求。
- 阻断自动化爆破:每次爆破需携带最新Token,而Token需从服务器动态获取,导致传统字典爆破失效。
+++
shell_exec函数
- Php 中的一个内置函数 作用是通过shell环境执行命令
- 它允许PHP代码在服务器的操作层面执行外部命令
+++
Low Mudium High
Brute Force
low
这里直接在登录框中随便输入一些提交 并用bp拦截
在顶部看到了username =
password =
这里直接发送到intruder 中 攻击模式选择cluster bomb
->分别在username =
password =
后面用add 载荷
将你写的东西包住 之后payload set
中 在1 和 2 中分别导入字典 之后直接开始攻击 这里是否攻击成功主要取决于你的字典中东西的组合是否可以匹配到正确的用户名和密码
medium
这里于low的区别在于这里增加了sleep
,也就是用户每一次输入失败都会导致暂停两秒之后才可以登录 所以这只是延长了我们的爆破时间而已 步骤和上述没有什么区别
+++
Command Injection
**原理 **:
命令注入(Command Injection)是一种严重的安全漏洞,通常发生在应用程序未能正确验证、过滤或转义用户输入的情况下。攻击者可以通过构造特殊的命令字符串如
8.8.8.8 && net user
,利用这一漏洞执行外部程序或系统命令,从而达到非法获取数据或控制服务器的目的1。
low
它让我们输入ip 地址 我们输入127.0.0.1 它这里出现了ping 也就是和我们的cmd
有类似的效果 但是我们尝试输入ipoconfig
发现不可以
这是因为ipconfig 不是一个ip地址 所以不给 但是 我们输入127.0.0.1|ipconfig
就可以了
- 这里我们要说一下命令连接符
& :前面一个命令无论是否执行,后面的命令都能执行,两个命令都执行
&&:前面一个命令执行成功后,才能执行后面一个命令,两个命令都执行
|:前面一个命令无论是否执行,后面的命令都能执行且只执行后面一个
||:前面一个命令不能正常执行后,才能执行后面一个命令
medium
代码审计
<?php
if( isset( $_POST[ 'Submit' ] ) ) {
//检查是否通过Post提交submit
// Get input
$target = $_REQUEST[ 'ip' ]; //用request 超全局变量将ip地址交给target
// Set blacklist
$substitutions