目录
一、xss原理和分类
1.原理
2.分类:xss分为存储型和反射型以及dom型
(1)反射性
(2)存储型
(3)dom型
二、靶场关卡练习编辑
1.第一关
2.第二关
3.第三关
4.第四关
5.第五关
6.第六关
7.第七关
8.第八关
9.第九关
10.第十关
11.第十一关
12.第十二关
三、总结
一、xss原理和分类
1.原理
xss叫做跨站脚本攻击,指的是攻击者利用网页的漏洞,在我们的页面插入我们恶意的script链接,诱导我们的用户去点击,从而触发我们的链接获取用户的cookie值,从而获取网页的的权限
2.分类:xss分为存储型和反射型以及dom型
(1)反射性
攻击者通过构建一个payload链接,然后诱导我们的用户去点击链接,当用户点击链接后,去访问我们正常的服务器,我们的服务器将正常的页面的代码和xss链接返回给我们的浏览器,浏览器正常解析我们的页面和恶意payload完成后去访问我们的恶意服务器,我们的攻击者就可以从恶意的服务器上获取用户的cookie和信息。
(2)存储型
攻击者通过留言板等,在留言板处提交我们的script的恶意脚本存储在我们的服务器上,当用户访问我们的服务器的时候,服务会将携带有恶意脚本的链接以及正常的页面返回给我们的浏览器,我们的浏览器正常的去解析我们的页面代码和恶意代码,这时候就会去访问我们的恶意服务器,我们的攻击者就可以从恶意的服务器上获取到用户信息
(3)dom型
其实和我们的反射型很相同
二、靶场关卡练习
1.第一关
在我们的url上随便写入一个aaa看一下我们的源代码注入在哪里
这时候我们直接在url上写一个script标签
<script>alert(1)</script>
成功弹窗
2.第二关
我们在输入栏输入点击就会触发弹窗的代码,查看源码发现没逃逸出双引号
οnclick="alert(1)"
我们尝试去逃逸出我们的双引号,然后点击搜索出现弹窗
aaa" οnclick=''alert(1)
3.第三关
在输入栏输入点击代码看是否有弹窗,再看我们的源代码发现我们的双引号被过滤了
aaa" οnclick="alert(1)
尝试使用单引号看是否可以绕过过滤,点击搜索发现出现弹窗
aaa' οnclick='alert(1)
4.第四关
在输入栏输入aaa"看我们提交的内容到了哪里,看源代码
在我们的输入栏输入点击触发脚本,发现出现弹窗
aaa" οnclick="alert(1)
5.第五关
在输入栏输入点击触发弹窗代码,查看源码我们发现on被过滤为o_n无法逃逸,无法出现弹窗
aaa" οnclick="alert(1)
我们尝试换成其他的恶意脚本弹窗,查看源码发现我峨嵋你的script被过滤为sc_ript还是无法弹窗
aaa"><script>alert(1)</script>
我们尝试利用链接弹窗看能否执行
aaa"> <a href="javascript:alert(1)">aaa</a>
我们点击链接,查看源码发现成功的绕过并出现了弹窗
6.第六关
我们继续使用onclick点击触发,查看源码发现我们的on被过滤为o_n
aaa" οnclick="alert(1)
我们尝试使用链接方式看能否触发,查看源码发现我们的href被过滤为了hr_ef,也无法弹窗
"><a href="javascript:alert(1)">aaa</a>
我们不妨换一种思路既然全被过滤了,能否使用大小写进行绕过,发现成功绕过并出现弹窗
aaa" ONclick="alert(1)
7.第七关
我们继续尝试在输入栏输入点击触发脚本,我们查看源码发现我们的on被过滤了,弹窗失败
aaa" οnclick="alert(1)
我们的on被过滤了,我们尝试双写on看是否被过滤,查看源码发现绕过并成功弹窗
aaa" oonnclick="alert(1)
8.第八关
我们查看源码发现被执行的是在a标签内的,我们使用a标签弹窗,发现我们的script被过滤为scr_ipt,尝试使用大小写绕过结果自动过滤为小写,都无法弹窗
javascript:alert(1)
javaSCRIPT:alert(1)
我们尝试使用html编码,发现成功注入,原因是我们的html编码是由js执行编译的。
javascript:alert(1)
点击友情链接,发现弹窗成功。
9.第九关
我们查看源码发现被执行的部分还是在a标签里面,我们输入弹窗脚本发现提示连接不合法
javascript:alert(1)
我们尝试加上http头部,虽然成功注入但是我们的script被过滤为scr_ipt
http://javascript:alert(1)
我们尝试html实体编码,发现成功绕过但是点击链接并未成功触发,我们需要绕过http://
http://javascript:alert(1)
我们尝试使用//绕过http://,原理是在//在编译的过程可以理解为注释符号,可以注释后面的内容,成功的弹窗
javascript:alert(1)//http://
10.第十关
我们发现没有注入的输入栏,我们查看源码发现存在隐藏的输入栏,我们在url上尝试进行注入,我们发现t_link和t_history无法成功注入
?&t_link=aaa
?&t_history=aaa
我们尝试注入t_sort发现成功,我们找到了注入点尝试进行脚本注入
?&t_sort=aaa"
我们尝试注入触发弹窗脚本,但是我们需要注意的是需要有文本框能够点击
?&t_sort=aaa" type="text" οnclick="alert(1)"
点击我们的文本文框,发现成功触发弹窗
11.第十一关
我们直接查看源码,发现存在隐藏的文本框可以触发弹窗,我们发现t_refer特别像我们的头部字段,所以我们直接利用我们火狐浏览器的hackbar插件,传递我们头部字段
选择我们的referer,然后输入我们的脚本
aaa" type="text" οnclick="alert(1)
点击提交,成功的弹窗
12.第十二关
我们直接查看源码发现存在的隐藏的文本框,我们发现有一个叫做t_ua,我们猜测会不会是user agent我们利用hackbar进行测试
我们在hackbar上勾选我们的user agent,在里面输入我们的点击弹窗脚本
aaa" type="text" οnclick="alert(1)"
我们点击文本框,发现成功的弹窗
三、总结
一般存在xss漏洞的我们先看源码,看在哪里触发的,然后根据自己的所学不停的尝试去绕过,注意方法。