从不入门开始的XSS

本文记录了作者从零基础开始自学XSS的过程,通过逐步破解XSSChallenges的各个阶段,展示了如何利用JavaScript技巧绕过输入验证,以及遇到的浏览器特性与防御机制。

//从连控制台都看不懂的基础开始,自学xss个人记录。

//感谢大佬们的通关经验。

使用非常好用的XSS Challenges。网址:XSS Challenges (by yamagata21) - Stage #1

Stage #1

使用最基础的<script>alert(document.domain)</script>就能过。

Stage #2

进开发者工具,在搜索栏使用上次的语句。

得到反馈。找到form action

可以看到输入被封装在<input type = “”>里

带上引号和括号。使用“><script>alert(document.domain)</script>

通过。

Stage #3

坏消息:search a place的输入框是有合法性检查的

好消息:choose a country没有。

合法性检查的标志:第二行的input里,value=”Search”不会变。没有合法性检查的话,value=”(输入的东西)“

那俩option里面的黑字是可以随便改的。

把它改成这个

此时的题目界面:

在search a place那里随便输点什么,点search。

Stage #4

查看提示

在控制台找到hidden的输入框

把hidden改成txt后,出现输入框

直接输入后,发现语句被写入value,且保持在里面

闭合语句即可。

Stage #5

照常输入时,发现输入框有字数限制。

提示为length limited text box。

在控制台能轻松找到这个东西,给它改成任何足够大的数。

现在能随便输入了

Search一下就发现写进去了

改了上限再写一遍闭合的即可

Stage #6

提示是……event handler attributes

很好,看不懂,直接上手。

输入之后长这样。

尝试用”>直接闭合,结果如下

输入框对符号做了转译。但是第一次是没有的。经过反复尝试可以发现它会检查非法字符---  >  。具体来说是”后的>。

直接注入无法实现。但是由于它会写入,可以采取构造事件法。

输入  "onclick='alert(document.domain)'(鼠标点击触发事件)

(还有" onmouseover =alert(document.domain),鼠标经过触发事件

Search后会写入value。再次点击输入框,通过

Stage #7

提示如下

直接用上次的方法,发现”<>被转译。

测试发现空格后内容会被截断(下图输入的是111 ”>)

可以利用这一特性。

出现多出来的引号,删掉

成功。

Stage #8

会把输入的东西做成超链接。

背景知识:Javascrpt使用小寄巧

使用小寄巧,成功通过。

Stage #9

发现了奇怪的东西

……这啥啊()

弄出来康康,发现多了一个输入框。

在网上查了查是要把日语(euc-jp)换成UTF-7,然后提交UTF-7编码的py上去。由于过于麻烦,我选择这种操作

由于浏览器(Edge)的性质,所有的题其实都可以用上面的流氓方式强行通过,但是这样就学不到思路了,还是算了

但同样也是因为edge,burp suite抓包变得非常困难(要反复改系统设置而非浏览器设置)。如果一定要用bp还是装个Firefox比较好。

Stage #10

可以看到单词domain被禁用了。

随便构造一个,然后把domain插入domain中(例如变成ddomainomain),可以通过。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值