dvwa靶场基础题

本文深入探讨了SQL注入、SQL盲注、WeakSessionIDs、XSS(DOM与Reflected)等Web安全漏洞,剖析了其原理及利用方法,强调了在网站开发中防范这些安全威胁的重要性。

1.SQL注入就是通过构建特殊的具有SQL语法的语句,绕到数据库中进而执行相应的操作的漏洞。
(1)此为输入ID查找信息的,输入1有如下显示
在这里插入图片描述 (2)输入1’ or’ 1’ =’ 1可现实数据库所有内容
在这里插入图片描述 (3)通过使用user(),database(),version()三个内置函数得到连接数据库的账户名、数据库名称、数据库版本信息。之后因不过滤可用一些语句猜测表名,列名及表中信息。
2.SQL盲注:盲注和普通的SQL注入原理是一样的,普通注入是会显示一些错误信息在页面上给攻击者判断,也就是说它会有多种情况,从而方便攻击者,而盲注则是只有两种情况,即TRUE和FALSE,这样说并不是很准确,因为SQL查询无非就这两种情况,应该说是盲注的时候你只能得到一个正常的页面或者是什么页面的不存在,甚至你在查询表的记录过程也不会有显示。

3.Weak Session IDs:用户访问服务器的时候,一般服务器都会分配一个身份证 session id 给用户,用于标识。用户拿到 session id 后就会保存到 cookies 上,之后只要拿着 cookies 再访问服务器,服务器就知道你是谁了。但是 session id 过于简单就会容易被人伪造。根本都不需要知道用户的密码就能访问,用户服务器的内容了
(1)每点击一次,抓到的包cookie中dvwaSession值加一,但由于源码不完善会造成session不是唯一
在这里插入图片描述在这里插入图片描述4.XSS(DOM):XSS(Cross Site Script),全称跨站脚本攻击,通常指黑客通过 HTML 注入 篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击行为。
(1)low级没有任何保护措施,页面让我们选择默认语言,但并不严谨,没有过滤,所以我们可以把我们的脚本插入代码中执行
在这里插入图片描述(2)之后便可构造攻击语句把它插入代码中,访问http://127.0.0.1/DVWA-master/vulnerabilities/xss_d/?default=English%3Cscript%3Ealert(/xss/);%3C/script%3E可访问成功,查看源码则代码已插入
在这里插入图片描述5. XSS (Reflected)
(1)查看源码可发现low级别的代码只是判断了name参数是否为空,如果不为空的话就直接打印出来,并没有对name参数做任何的过滤和检查,存在非常明显的XSS漏洞,直接通过$_GET方式获取name的值,之后未进行任何编码和过滤,导致用户输入一段js脚本会执行。
在这里插入图片描述在这里插入图片描述当输入,如图可直接插入代码中
在这里插入图片描述 7.csp bypass: CPS 简单介绍一下就是浏览器的安全策略,因为 CSP 主要是客户端进行防御, 所以服务端的核心代码应该是没有变的,我们可以通过编辑信任的网页进行攻击

  1. javascript dvwa :
    (1)输入success会显示不正确
    在这里插入图片描述 (2)查看源代码,会看到这个 token,不是后台生成的,而是前台生成的,而前台生成的 token,是用 md5(“ChangeMe”),而后台期待的 md5 是 md5(“success”)。。
    在这里插入图片描述 (2)F12,控制台调用函数
    在这里插入图片描述
<think>好的,我现在需要处理用户关于DVWA靶场中反射型XSS各个级别的解法及防御机制的问。首先,我得回忆一下DVWA的不同安全级别,包括Low、Medium、High和Impossible,每个级别对应的代码和防御措施。 用户提到反射型XSS,所以得先明确反射型XSS的基本概念,即恶意脚本通过URL参数注入,服务器未正确处理输入导致脚本在用户浏览器执行。接下来需要分级别分析每个级别的漏洞利用方式和防御手段。 对于Low级别,通常是没有任何过滤,直接输出用户输入的内容。例如,用户输入<script>alert('XSS')</script>就能触发弹窗。这时候的源码可能直接使用类似$_GET['name'],没有任何处理。需要给出示例的Payload,并说明如何通过URL注入。 Medium级别可能有一些基础的过滤,比如使用htmlspecialchars()函数,但可能参数设置不正确,比如只转义双引号而忽略单引号,或者使用str_replace()函数替换<script>标签为空,但可能存在大小写绕过或嵌套标签的情况。这时候需要测试不同的Payload,比如<ScRipt>或者<img src=x onerror=alert('XSS')>。 High级别可能会有更严格的过滤,例如使用正则表达式彻底移除script标签,或者使用更全面的转义。但可能仍有其他注入方式,比如使用其他HTML标签的事件属性,或者利用SVG标签等。这时候需要找到未被过滤的标签或属性,构造新的Payload。 Impossible级别则应该完全防御XSS,通常是通过正确使用htmlspecialchars()函数,设置正确的参数(如ENT_QUOTES和UTF-8编码),确保所有特殊字符都被转义。这时候需要分析源码中的转义处理,说明为什么这样的处理能有效防御XSS。 此外,用户还要求生成相关问,可能需要包括各等级的区别、防御XSS的其他方法、htmlspecialchars函数参数的重要性等。 需要注意引用用户提供的参考内容中的[^1],在适当的地方添加引用标识,例如在提到DVWA平台时引用。同时,确保回答结构清晰,分级别解释,代码部分用反引号包裹,数学公式用$符号,但这个问中可能不需要数学公式,所以重点在代码和防御机制的分析。 需要检查每个级别的源码示例,确保正确性。比如,Low级别的代码可能直接输出输入,而Impossible级别则正确转义所有输入。同时,要指出为什么某些防御措施有效,例如htmlspecialchars转义了<、>、&等字符,使得浏览器不会解析为标签。 可能还需要考虑其他防御措施,如CSP(内容安全策略),但用户主要关注源码分析,所以重点在输入处理和转义。 最后,生成的相关问需要与XSS漏洞的利用和防御相关,覆盖不同级别、防御方法、源码分析等。</think>### DVWA反射型XSS分级别解析与防御机制 #### 1. **Low级别** - **漏洞原理**:直接输出用户输入,无任何过滤。 - **利用方法**: ```url http://靶场地址/vulnerabilities/xss_r/?name=<script>alert('XSS')</script> ``` - **源码分析**: ```php <?php header ("X-XSS-Protection: 0"); //关闭浏览器XSS防护 $name = $_GET['name']; echo "Hello $name"; //直接输出未过滤的内容 ?> ``` - **防御缺陷**:未对`<`、`>`等关键字符转义。 #### 2. **Medium级别** - **漏洞原理**:使用`str_replace`过滤`<script>`标签,但存在绕过。 - **绕过方法**: - **大小写绕过**:`<ScRipt>alert(1)</sCript>` - **非script标签**:`<img src=x onerror=alert('XSS')>` - **源码分析**: ```php $name = str_replace('<script>', '', $_GET['name']); //仅替换全小写标签 ``` - **防御缺陷**:未处理事件属性和其他标签[^1]。 #### 3. **High级别** - **漏洞原理**:使用正则表达式彻底移除`script`标签,但仍允许其他HTML。 - **绕过方法**: ```html <svg/onload=alert('XSS')> <!-- 利用SVG标签的事件属性 --> ``` - **源码分析**: ```php $name = preg_replace('/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET['name']); ``` - **防御缺陷**:未过滤其他可执行脚本的标签[^1]。 #### 4. **Impossible级别** - **防御机制**:严格转义所有特殊字符。 - **源码分析**: ```php $name = htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8'); //转义所有HTML实体 echo "Hello $name"; //输出示例:<script> → <script> ``` - **关键点**: - `ENT_QUOTES`:转义单双引号。 - 指定`UTF-8`编码防止编码绕过。 #### 5. **防御建议** 1. **输入过滤**:使用白名单机制限制允许的字符。 2. **输出转义**:对动态内容使用`htmlspecialchars()`并设置`ENT_QUOTES`。 3. **CSP策略**:通过HTTP头限制脚本来源: ```http Content-Security-Policy: default-src 'self' ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值