XSS(跨站脚本攻击)是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS按照利用方式主要分为:反射型XSS、存储型XSS、DOM型XSS。反射型XSS是攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS即存储型XSS,非常危险,容易造成蠕虫,大量盗窃cookie。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。
leve1
反射型xss,将name后面的值test改为
level2
查看后端代码
得先将前面闭合 ,并且用//将后面的代码注释掉
左边的">去闭合原先的",右边的//去注释原先的">
">//
level3
输入test进行尝试,发现没有成功,观察后端代码
猜测服务器端在这两处都用htmlspecialchars()
函数进行了处理。
通过标签的一些特殊事件来执行js代码
构造代码:'onfocus=javascript:alert('zrtonnn') > //&submit=搜索
网页上的一个输入框,当使用鼠标点击该输入框时输入框被选中可以
输入内容的时候就是该输入框获得焦点的时候,此时输入框就会触发onfocus事件.因此
点击当前页面的输入框就可以完成弹框了。
level4
查看后端代码
和上一关一样的思路,用onfocus来执行,
" onclick ="javascript:alert(zrtonnn)"//
level5
分析图片,还是get方式请求参数,所以还是反射型的xss
上弹窗代码:
测试一下,发现不行
查看后端代码,发现script过滤了,onclick也过滤了
尝试构造a标签:
">zrtonnn//
level6
尝试恶意代码:
发现失败,查看后端代码
可以看到在value属性值中也插入了_
符号防止xss的发生
尝试利用大小写混写绕过
">
level7
上恶意代码测试一下:
查看后端代码
可以看到onfocus事件直接把on字符删除了,javascript中的script字符也被删除了。
接着尝试和上一关一样试试大小写绕过,发现没法成功,接下来试试双写绕过
">alert(1)
level8
查看后端源代码
<
和>
被编码了
在href属性值中script
字符被插入了_
字符破坏语义
用来闭合引号的引号也被编码了,onfocus一类的事件也被破坏了,大小写绕过也不行
我从网上得知,可以尝试使用Unicode编码进行绕过尝试
javascript:alert(1)
level9
先进行检测
<>"'script onclick
发现双引号和尖括号都给过滤了
查看后端源代码
语句显示在href
中,但是javascript
字符中插入了_
我们尝试使用编码绕过
javascript:alert(1)//http://www.baidu.com
level10
来到第十关,可以发现不再有搜索框,也不再有超链接可以给我们点了,连常规语句也不行。
查看源代码,在源码中有一个隐藏的表单。
其中含有t_link
t_history
t_sort
这样三个隐藏的标签
构造语句看看哪一个能被突破
?keyword=&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"
出现弹窗
页面响应来看,有一个标签的状态可以被改变。这个标签就是名为
t_sort
的标签,之前都是隐藏状态,但是通过构造参数响应发现只有它里面的值被改变了,因此可以从该标签进行突破,尝试能不能注入恶意代码进行弹窗。
我们使用onclick来处理,输入后点击即可
&t_sort=" type='text' onclick='javascript:alert(1)'>//
level11
点击f12查看网页源代码
同第十关一样有隐藏的表单,不同的是多了一个名为t_ref
的标签,尝试用上一关的方法看看能不能从这几个标签进行突破注入代码。
?keyword=good job!&t_link="type="text&t_history="type="text&t_sort="type="text&t_ref="type="text
查看页面源代码
t_sort仍然是接受参数值的,但是里面的双引号被编码了,这样浏览器只能正常显示字符但是却无法起到闭合的作用了。
使用bp抓包
发现数据包中并没有refer这个请求头
添加referer:111
可以看到我们添加的referer
头的值出现在了t_ref
标签的value属性值中了,接下来就是从这里突破注入恶意代码了。
referer:"type="text" onclick="alert('zrtonnn')
level12
查看页面源代码
看到了t_ua
这样一个标签,并且其中的value属性的值发现了一串类似user-agent的东西 ,我们尝试使用bp抓包后进行修改,将ua后面插入恶意代码
"type="text" onclick="alert('zrtonnn')
触发了onclick恶意代码
level13
查看一下页面源代码看看
可以看出cookie中的值被插入进了value当中,基于此,我们可以修改cookie插入恶意代码达到我们想要的效果
将cookie里的信息修改为:
user=" type='text' onclick='javascript:alert(1)'>//
level14
十四关有点毛病,无法通关
level15
查看源代码看看
参数值被插入到了
标签中,测试一下
xss/level16.php?keyword=“ ‘ <> script onerror onclick
发现过滤了script和" '还有空格
尝试加个a标签,空格用回车编码代替,点击图片过关