BWAPP靶场-HTML injection-Reflected(GET)

本文介绍了HTML注入的概念,并通过Low、Medium、High三个级别的实例详细分析了如何实施HTML注入攻击及防御措施。从简单的未经过滤的场景到使用htmlspecialchars函数进行防御的高级场景,展示了不同情况下攻击者可能利用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x00 知识储备

HTML注入,就是当用户进行输入时,服务器没有对用户输入的数据进行过滤或转义,导致所有输入均被返回前端,网页解析器会将这些数据当作html代码进行解析,这就导致一些恶意代码会被正常执行。

0x01 Low

首先输入1和1测试一下

 发现结果正常出现在页面上,直接试一试XSS

<script>alert(1)</script>1

还可以尝试超链接

<a href="http://www.baidu.com">111</a>

 

点击111即可完成跳转

源码分析:

可以看到没有任何处理

0x02 Medium

分析源码,可以看到,源码首先将<,>替换成字符实体(这是因为这些字符在HTML中有特殊含义,所以要想在文本中使用它们我们就需要使用字符实体),同时利用了urldecode进行解码,也就是对于我们输入的信息,应该是进行了两次url解码(一次是浏览器对输入数据打包传送给后端时,第二次是后端的url解码)

所以只需要将要输入的代码进行两次url编码即可,url解码地址:http://www.jsons.cn/urlencode/

但是这时直接在输入框中输入两次url编码的结果发现和预期结果不同!!!

观察结果,发现 显示的First name是代码进行一次url编码的结果。原因是输入框输入数据后,GET请求将参数输入到url地址栏时会进行一次url转码,所以此时地址栏显示的是代码三次编码后的结果,这样传入后端时,浏览器解码一次,后端再解码一次,显示出来的结果就是一次编码的结果。所以如果在输入框输入时我们只需要输入一次编码的结果即可,而在地址栏中输入时需要输入两次编码的结果。

执行成功,点击click即可跳转

0x03 High

分析源码

htmlspecialchars() 函数把特殊字符转换为 HTML 实体。这意味着 < 和 > 之类的 HTML 字符会被替换为 &lt; 和 &gt; 。这样可防止攻击者通过在表单中注入 HTML 或 JavaScript 代码(跨站点脚本攻击)对代码进行利用。 此时无法再进行HTML注入。

第一次写博客,写的不对或者不好的地方希望大佬们指出:)

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值