ctf中文转unicode_CTF/CTF练习平台-XSS【xss注入及js unicode编码及innerHTML】

这是一篇关于CTF挑战的博客,详细介绍了如何通过JavaScript和Unicode编码来绕过XSS过滤,从而在指定的输入字段注入XSS代码并触发`alert(_key_)`,以获取隐藏的Flag值。博客内容涉及到HTML的`innerHTML`属性,XSS过滤的常见应对策略,以及Unicode在绕过过滤时的应用。
摘要由CSDN通过智能技术生成

原题内容:javascript

http://103.238.227.13:10089/css

Flag格式:Flag:xxxxxxxxxxxxxxxxxxxxxxxxhtml

题目有点坑啊,注入点都没说明,去群里问的,这题注入点为id(get方式),id的值会进行替换后进入sjava

补充了这个,好了,继续作题xss

右键源码学习

var s="";

document.getElementById('s').innerHTML = s;

结合上述补充,和题目要求编码

一、请注入一段XSS代码,获取Flag值spa

二、必须包含alert(_key_),_key_会自动被替换.net

首先,解释下源码中发现的代码的意思,下面举个例子说明下innerHTMLcode

百度

document.getElementById("baidu") 得到 a 这个元素

document.getElementById("baidu") .innerHTML 得到 a 这个元素内的HTML代码(即百度)

document.getElementById("baidu") .innerHTML = "谷歌"

设置 a 这个元素内的HTML代码,

设置后百度

就变为谷歌

搜索document.getElementById('s').innerHTML时发现一个颇有趣的问题

若是字符串中拼接的 HTML 标签中有 script 标签,那么该段脚本是没法执行的,这并非 bug,而是 w3c 的文档规定的

这里推荐一个博客,你们能够前去学习一下

咱们须要的是能够从注入点id进入的方法,因此这里参考其博客的img标签方法,因而构造

http://103.238.227.13:10089/?id=

很遗憾,存在回显

eca2d83df53e00a121197c363453517a.png

这说明,存在xss filter,咱们的传参字符串中存在被屏蔽的词

通常最可能的是alert,但这里题目要求存在alert,顾考虑第二可能点<>

进行了两组尝试,代码和回显以下:

连接

http://103.238.227.13:10089/?id=\%3Cimg%20src=1%20οnlοad=alert(_key_)/\%3E

回显

1

连接

http://103.238.227.13:10089/?id=\\%3Cimg%20src=1%20οnlοad=alert(_key_)/\\%3E

回显

\1

很明显了,反义符号对<>不起做用,对自己起做用,这说明阻挡点是<>

注意页面编码utf-8

id传入代码会在s中运行

考虑将<>进行unicode编码,这样当代码被替换进去运行时,utf-8编码又会将其变回来

具体表参考博客

接下来就没问题了

构造连接

http://103.238.227.13:10089/?id=\u003cimg%20src=1%20οnlοad=alert(_key_)/\u003e

查看源代码,可看到_key_已经被替换成答案

var s="\\1";document.getElementById('s').innerHTML = s;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值