XSS攻击原理
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
XSS的类型
1.反射型的XSS(非持久型XSS)
1.存储型的XSS(持久型XSS)
3.DOM型的XSS
xss攻击常用方法
1.大小写绕过
2.利用过滤后返回语句再次构成攻击语句来绕过
3.编写脚本代码绕过关键字过滤
4.主动闭合标签实现注入代码
5.组合各种方式
首先,让我们点击图片
开始第一关吧
我们可以看到当前页面没有用户输入点
查看代码(友情提示:F12/鼠标右键)
发现可以在地址栏中更改用户的名字
输入<script>alert(/xss/)</script>
直接执行脚本,没有对输入有任何的过滤
并不是只有script可以插入代码
我们还可以使用<img>标签
<img src=”w” οnerrοr=”alert(/xss/)”>
图片错误会执行后面的onerror语句
同理
也可使用<a>标签、<iframe>标签
使用onmouseout移开鼠标、onclick点击等等进行alert(/xss/)语句
点击确定进入第二关
发现多了一个文本框和按钮
查看代码
尝试修改文本框内容,发现
三处同时变化
利用input标签的value值
采用<script>标签,绕过
注意:需要构造闭合
"><script>alert(/xss/)</script><input name="
或者使用onmouseout 鼠标移动进行某操作
2" οnmοuseοut="alert(/xss/)
onclick亦可
" οnclick="alert(/xss/)
我们来到第三关
第三关和第二关一样有一个文本框和一个按钮
查看代码
按照第二关的第一种方法尝试,发现无法解析<>和””
那就要换种绕过方法
构造事件onclick触发,并且把" "改为' '
发现是可执行的
既然onclick可以那onmouseout一定也可以,试一下
' οnmοuseοut='alert(/xss/)
来到第四关
按例查看代码,使用
尝试"> <script>alert(/xss/)</script><input="
<>仍被实体化
onclick可以
" οnclick="alert(/xss/)
onmouseout
" οnmοuseοut="alert(/xss/)
来到第五关啦
首先,我们还是尝试使用<script></script>
出错了
查看源代码
scr和ipt中间有了个下划线,对script进行了过滤
采用上一关的方法" οnclick="alert(/xss/) 发现 on也被过滤了
使用一种新方法
<a>标签:超链接
"><a href="javascript:alert(/xss/)">5<"
点击超链接
还有一种方法:
使用<iframe>标签
"><iframe src=”javascript:alert(/xss/)"><"
发现弹窗了
但是呢,出现了一个小问题你点确定却没有跳转。不要困惑你过关了,但是此方法暂时不能直接过去~
还是使用上一个方法吧。
来到第六关啦
使用上一关的方法调用<a>
没有出现超链接
我们查看源代码一下
hr和ef中间出现下划线,尝试切换大小写绕过
"><a Href="javascript:alert(/xss/)">6<"
出现超链接了
代码正确
点击超链接,进入下一关吧
进入第七关啦
进行<script></script>尝试,被过滤掉了
onclick尝试,on无法显示
怎么办呢?
尝试一下复写
" oonnclick="alert(/xss/)
成功了
又学会了一种方法呢。
进入第八关吧
发现比之前的关卡多了一个链接
查看代码看看吧
试试<script></script>标签吧,一如既往的不行呢。
输入javascript:alert(/xss/)发现
r和i之间有了个空格,但其实那是个制表符
有两个方法
方法1:在url里面javascript字母中加入url编码的制表符:%09
方法2:将javascript其中一个字母实体化编码
分享一个链接:在线编码转换
可以进行转换,例如
javascript:alert(/xss/)
进入第九关了
查看一下代码
尝试上一关的方法
avascript:alert(/xss/)
发现没有问题,是为什么不能跳转呢?
哦,原来人家给提示了“您的链接不合法”
那我们就想个办法使其合法吧
查看地址栏发现
需要前缀
那就加个前缀试试吧
那就使用之前的代码并把http://注释掉试试吧
javascript:alert(/xss/)//http://
嗯,成功了!!!
点击链接
到第十关了哦
页面没有找到用户输入口
查看页面输出口发现
可能于此有关
尝试修改
哦哦,没有变化
查看代码
发现隐藏类型的input标签
在地址栏输入
再次查看代码
我们发现t_sort可以改value的值
可以借用,在url中输入t_sort=" type="text" οnmοuseοut="alert(/xss/)
出现一个文本框
移动鼠标
第十关挑战成功了!!!