xss-labs Less8-15关卡
level8
输入script '">< on On看看他过滤什么东西
发现"><被实体化了On变成小写的了
发现我们输入的也被写到了script变成scr_ipt,"转换成",on变成o_n,On变成o_n
我们输入javascript:alert(1);来点击链接进行弹窗

发现javascript:alert(1);被转换成javascr_ipt:alert(1);
我们可以进行编码啊,js代码又不管你什么编码都一样的效果
1 | javascript:alert('a') |
上面HTML编码后变成
1 | javascript:alert('a') |
我们就输入
1 | javascript:alert('a') |
我们输入点击
level9
输入script '">< on On看看他过滤什么东西
可以看见下面说你的链接不合法,什么是不合法没有办法我就看了一下他的源码
1 | <!DOCTYPE html><!--STATUS OK--><html> |
可以看见源码上写参数必须有http://
上面过滤script,on,src,data,href,"
我们输入
1 | http://javascript:alert('a') |
发现他没有弹窗
看一下源码
看看我们能不能叫前面的http://用/**/注释掉
变成
1 | <a href="/*http://*/javascript:alert('a')">友情链接</a> |
我们输入
1 | /*http://*/javascript:alert('a') |
发现/*http://*/在前面没有注释掉啊
我就想放到后面不就好了吗用//来闭合
1 | <a href="javascript:alert('a')//http://">友情链接</a> |
我们输入
1 | javascript:alert('a')//http:// |

level10
他的输入点在url上
我们输入<script>alert('a')</script>
看一下网页源码
他重要都已经过滤了没有思路了
我只能看一下源码了代码审计一下
下面可以看见有一个t_sort GET请求,他还过滤><转换成空
1 | <!DOCTYPE html><!--STATUS OK--><html> |

我们URL输入http://127.0.0.1/xss/level10.php?t_sort=aaa
他也没有显示啊
看一下网页源代码
可以看见有hidden属性就是隐藏的意思,用hidden叫代码进行了隐藏
隐藏但是代码还是执行了啊
1 | <input name="t_sort" value="我们输入到内容" type="hidden"> |
我们可以用"进行闭合然后在添加事件触发弹窗
应为事件都是达到条件才会触发我们,但是应为他的是隐藏的type="hidden"在最后面我们就可以注释掉啊,在添加一个type="text"输入框
下面
1 | <input name="t_sort" value="1"onfocus='alert(1)' type="text" //" type="hidden"> |
我们输入1"onfocus='alert(1)' type="text" //
level11
他的输入到地方也是在URL里面
我还是输入script '">< on On看看他过滤什么
看一下网页源码和level10差不多
我叫下面提交的参数

t_sort这个参数有返回
我们输入level10的提交的1"onfocus='alert(1)' type="text" //看看他过滤什么
发现"被实体化了
我输入><
也是被实体化了
没有思路了
看一下代码审计一下
可以看见下面的代码有一个$_SERVER['HTTP_REFERER']$_SERVER 是 PHP 预定义变量之一,可以直接使用,它是一个包含了诸如头信息(header)、路径(path)及脚本位置(script locations)信息的数组。$_SERVER['HTTP_REFERER']里面的HTTP_REFERER是链接到当前页面的前一页面的 URL 地址,
$str33变量只过滤了<>
1 | <!DOCTYPE html><!--STATUS OK--><html> |
$_SERVER['HTTP_REFERER']在level10访问到level11就会触发

进入level11后我们查看一下网页源代码
下面就有返回了
点击确定他会请求
我就用burp修改里面的请求
可以看见http请求有一个Referer字段,$_SERVER['HTTP_REFERER']就会取Referer字段的内容
我在这个地方输入AAA他的表单就有显示出来
1 | <input name="t_ref" value="他会显示在这个地方" type="hidden"> |
进行分析改成这样
1 | <input name="t_ref" value="1"onfocus='alert(1)' type="text" //" type="hidden"> |
我们在Referer字段改成1"onfocus='alert(1)' type="text" //
请求出来可以看见返回的
我们在浏览器打开

level12
我直接查看他的网页源代码
发现他就是User-Agent字段啊
burp抓包看看
我直接叫User-Agent字段啊数据改成level11的那样
进行分析改成这样
1 | <input name="t_ref" value="1"onfocus='alert(1)' type="text" //" type="hidden"> |
我们在User-Agent字段字段改成1"onfocus='alert(1)' type="text" //

burp的回话在浏览器打开

level13
我还是直接查看网页源代码
发现这次在Cookie字段里面
和level11和level12的方法进行修改Cookie字段内容
进行分析改成这样
1 | <input name="t_ref" value="1"onfocus='alert(1)' type="text" //" type="hidden"> |
我们在Cookie字段字段字段改成1"onfocus='alert(1)' type="text" //

还是在浏览器打开burp原话

level14
不知道没有思路,
真的是没有办法我就百度了xss-level14应为这个是要引用其他的web页面,那个页面已经没有了
level15

我看一下页面源码
我一看见就懵了
发现了有一个可疑的ng-include:是引用
但是还是没有思路
看一下源码用了htmlspecialchars()函数进行



