网络安全 DVWA通关指南 DVWA File Inclusion(文件包含)
DVWA File Inclusion(文件包含) 参考文献 WEB 安全靶场通关指南 本地文件包含(LFI) 文件包含漏洞的产生原因是 PHP 语言在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。 ...
DVWA File Inclusion(文件包含) 参考文献 WEB 安全靶场通关指南 本地文件包含(LFI) 文件包含漏洞的产生原因是 PHP 语言在通过引入文件时,引用的文件名,用户可控,由于传入的文件名没有经过合理的校验,或者校验被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。 ...
DVWA DOM Based Cross Site Scripting (DOM型 XSS) 参考文献 WEB 安全靶场通关指南 XSS跨站原理 当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞。这个“跨”实际上属于浏览器的特性,而不是缺陷; ...
DVWACommand Injection(命令注入) 参考文献 WEB 安全靶场通关指南 Low 1、分析网页源代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <?php // 当表单提交按钮(Submit)被触发时执行以下代码 if (isset($_POST['Submit'])) { // 获取用户通过POST方式提交的IP地址数据 // 注意:此处使用$_REQUEST可能会受到GET和POST两种方式的影响,为了安全性建议明确指定来源(如$_POST) $target = $_REQUEST['ip']; // 检查当前服务器的操作系统类型 if (stristr(php_uname('s'), 'Windows NT')) { // 如果是Windows操作系统,则构建用于执行ping命令的字符串 // 使用单引号包围命令并在末尾添加从用户输入获取的IP地址 // 注意:这段代码存在命令注入风险,因为未对$user变量进行任何过滤或转义 $cmd = shell_exec('ping ' . $target); } else { // 否则,认为是类*nix系统(Unix/Linux/Mac OS等) // 构建用于执行ping命令的字符串,'-c 4' 参数表示发送4个ICMP请求包 // 同样,这段代码也存在命令注入风险 $cmd = shell_exec('ping -c 4 ' . $target); } // 将执行命令的结果赋值给 $cmd 变量,并将其作为HTML预格式化的文本显示给用户 // 这里展示了命令执行结果,但也暴露了潜在的安全风险 $html .= "<pre>{$cmd}</pre>"; } ?> 2、网页对参数没有任何过滤,可以使用"&“、”&&“、”|“、”||“逻辑连接符连接命令,直接执行命令。 ...
DVWA Brute Force (爆破) 参考文献 WEB 安全靶场通关指南 Low 1、分析网页源代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 <?php // 检查是否存在"Login" GET 参数,这通常是提交登录表单后触发的动作 if( isset( $_GET[ 'Login' ] ) ) { // 获取POST方式提交的用户名 $user = $_GET[ 'username' ]; // 注意:这里应当使用 $_POST 而非 $_GET 来获取表单数据,因为登录通常涉及敏感信息,推荐使用 POST 方法 // 获取POST方式提交的密码,并使用md5函数对其进行哈希加密(注意:MD5已经不再安全,应使用更安全的加密算法如bcrypt) $pass = $_GET[ 'password' ]; // 同上,此处应改为 $_POST['password'] $pass = md5( $pass ); // 这里假设密码在数据库中是以MD5形式存储的 // 创建SQL查询语句,检查数据库中是否存在匹配的用户名和密码 $query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; // 执行SQL查询,连接数据库并处理潜在错误 $result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' ); // 检查查询结果是否成功且只有一条记录匹配(意味着用户名和密码正确) if( $result && mysqli_num_rows( $result ) == 1 ) { // 获取匹配用户的详细信息 $row = mysqli_fetch_assoc( $result ); // 提取用户头像URL $avatar = $row["avatar"]; // 登录成功,构造欢迎消息并显示用户头像 $html .= "<p>Welcome to the password protected area {$user}</p>"; $html .= "<img src=\"{$avatar}\" />"; // 显示用户的头像图片 } else { // 登录失败,输出错误提示信息 $html .= "<pre><br />Username and/or password incorrect.</pre>"; } // 关闭数据库连接 ((is_null($___mysqli_res = mysqli_close($GLOBALS["___mysqli_ston"]))) ? false : $___mysqli_res); } // 结束 if(isset($_GET['Login'])) ?> 2、使用管理员admin登录,密码尝试123,提示错误 ...
DVWA Cross Site Request Forgery (CSRF) 参考文献 WEB 安全靶场通关指南 CSRF是跨站请求伪造攻击,由客户端发起,是由于没有在执行关键操作时,进行 是否由用户自愿发起的 确认攻击者通过用户的浏览器来注入额外的网络请求,来破坏一个网站会话的完整性。 ...