Pikachu xss之href输出

先写个简单的xss进行注入,发现没有发挥作用,于是查看源码:

明显,无论是 ' 还是<>都被编码了,所以选择闭合标签或者属性的方式就行不通了,我们查阅一下W3school(链接:HTML <a> href 属性

HTML <a> href 属性

定义和用法

href 属性的值可以是任何有效文档的相对或绝对 URL,包括片段标识符和 JavaScript 代码段。如果用户选择了 <a> 标签中的内容,那么浏览器会尝试检索并显示 href 属性指定的 URL 所表示的文档,或者执行 JavaScript 表达式、方法和函数的列表。

如果 href 属性不存在,则 <a> 标签将不是超链接。

思路就有了,我们可以尝试在herf标签里面写入JavaScript的代码,也就是利用JavaScript协议

JavaScript 协议和 JavaScript 伪协议实际上是同一个概念。它们都指的是一种在 URL 中执行 JavaScript 代码的方法。这种方法以 javascript: 开头,后面跟着要执行的 JavaScript 代码。这个特殊的 URL 被称为 JavaScript URL 或 JavaScript 伪协议。

JavaScript 协议和 JavaScript 伪协议的使用

  1. JavaScript 协议的基本形式:

    • 在浏览器的地址栏中输入 javascript: 后跟着要执行的 JavaScript 代码。
    • 示例:
javascript:alert('Hello, World!');

在 HTML 中的使用:

  • 可以在 HTML 的某些属性中使用 JavaScript URL,例如 <a> 标签的 href 属性或 <img> 标签的 src 属性。
  • 示例:
<a href="javascript:alert('Click!')">Click me</a>
<img src="javascript:alert('Image clicked!')" alt="Image">

利用JavaScript协议。输入payload:javascript:alert('XSS')

拿下!

补充:——如何防止<a>herf标签里的xss攻击呢?——

HTML转义:

  • 在输出时,对用户提供的数据进行 HTML 转义,将特殊字符转换为 HTML 实体。

  • PHP中使用 htmlspecialchars() 函数,JavaScript中使用 encodeURI()encodeURIComponent() 函数。

    示例(PHP):

  • $userInput = "<script>alert('XSS');</script>";
    $safeOutput = htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
    echo '<a href="' . $safeOutput . '">Link</a>';
    

URL编码:

  • 对用户提供的数据进行 URL 编码,以确保 URL 中的特殊字符不会被解释为 HTML 或 JavaScript 代码。

  • JavaScript中使用 encodeURI()encodeURIComponent() 函数。

    示例(JavaScript):

  • var userInput = "<script>alert('XSS');</script>";
    var safeOutput = encodeURI(userInput);
    document.getElementById("myLink").href = safeOutput;
    

Content Security Policy(CSP):

  • 使用 Content Security Policy,它是一种通过设置 HTTP 头来限制浏览器加载内容的机制,可以防止执行内联脚本和其他不受信任的内容。

    示例(HTTP 头):

  • Content-Security-Policy: default-src 'self';
    

 

如果想在 JavaScript 伪协议中以 httphttps 开头,通常是为了实现一些动态的操作,比如跳转到其他网页。以下是一些示例:

在浏览器地址栏中执行:

javascript:window.location.href = 'http://example.com';

这会将当前页面重定向到 http://example.com

在 HTML 中使用:

<a href="javascript:window.location.href='http://example.com';">Visit Example</a>

点击链接时,同样会触发页面重定向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zTale

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值