第一题
第一点看见 传参 函数 name
尝试修改name 的值, 是否能执行js 脚本
源码分析
这里把 name 传的值 直接赋 给了
s
t
r
<
b
r
/
>
然后
str <br />然后
str<br/>然后str 没有做任何防护就 输出了 str 就直接执行了js 代码
第二题
先尝试输入 一下 js 代码
没有反应
没有闭合
value="
改成value "/>
后面就是执行的js代码了
源码分析
这里有两个点
一个是 htmlspecialchars 函数
把预定义 的字符 转换为 实体字符
但是这里没有把输入值就是实体化
定义和用法
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
’ (单引号)成为 '
< (小于)成为 <
(大于)成为 >
提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。
html 实体字符表 (常用)
第二个点
传进去的值是没有进行处理 和闭合
所有导致了 可以执行js代码
第三题
这里就用到了 html 实体编码了
这里把 ‘ <> 进行编码了
绕过
使用点击事件 onclick 或者
autofocus OnfOcus 自动聚焦和聚焦事件
没有就是闭合
'οnclick=alert(1)
少一个单引号
payload :
'οnclick='alert(1)
'autofocus οnfοcus='alert(1)
源码分析
这里就是在输入的地方做了实体化
第二题在输出的地方做了 没有在输入的地方做实体化
第四题
和第三题差不多的
使用双引号 进行闭合
第五题
这里只要输出了script 和 on
就会添加这个杠 scr_ o_n
大小写 双写 没用
这里可以使用
payload :
"> xss </a
源码分析
这里使用了strtolower 函数 和 str_replace() 函数替换字符串 函数
不管你输入大学还是双写大写 都会使用strtolower 转换成小写
然后 在进行替换
这里不能 使用 script 和 onlick ,onfoucus 函数了
使用 超链接的 形式进行xss
<a href= >
第六题
和上题一样使用 大写绕过就可以
源码分析
这里把href 也进行了替换 但是去掉了 strtolower 函数 就可以进行大写绕过了
第七题
这里就使用双写绕过
">alert(1)
第八题
输入了javascript:alert(1)
但是没有用过滤掉了scr
不能使用大写和双写绕过
这里使用16进制编码 把 r 和 i
payload:
javascript:alert(/xss/)
第九题
必须要使用http:// 不然就会出现 url错误
这要这么做呢
http:// 后面进行换行回车操作执行js
payload:
javascript:%0dhttp://%0dalert(/xss/)
源码分析
这里使用 了 === 严格比较 操作
必须使用http://
但是http:// 后面没有函数
使用 %0d 进行换行 处理
javascript:%0d
http://%0d
alert(/xss/)
这样就执行了
第十题
这题有个点就是 没有输入框 看源码是给隐藏掉了
然后输出的值也不是 keyword
而是t_sort 函数
过滤了替换掉了两个<>
所有这里使用点击事件 onclick
payload :
"οnclick="alert(1)
源码分析
第一个替换了 <> 括号
第二点 type 变成了隐藏
第三点 输入的函数不是 str 变量 , 变成了t_sort
十一题
一开始认为在t_sort 函数里面进行注入xss
但是写了没有效果
下面还有个 t_ref 函数
查看了资料发现可以进行Referer 头 进行注入 xss
使用BURP 抓包 修改进行Referer注入xss
修改返回包的 type 类型 为text
源码分析
从源码来看 一开始 误以为还是 t_sort 函数
单后面看这个t_ref 这个 也看不目标啥意思
代码从上往下看 注入的点应该就是 str33 这个变量了
后面才知道这里是 Referer 头的意思 那就是在Referer 的头进行了xss 注入
十二题
和刚才那题差不多的
这里函数是 t_ua 那就应该是User_agent 头注入xss 了
闭合了 修改为text 类型
十三题
差不多的 这里是cookie 注入xss
这里有个误区 就是不能把 user= 这个传参点删了 删掉之后就没有东西了
十四题环境有点问题
十五题
这题有点难 一开始没有看懂
一开始输入get 方式 输入 src =
这样会被过滤掉
源码分析
这里要联合源码进行分析处理
首先 get 输入方式 传参是 src
再了解一下 ng_include
用了ng-include指令的话,先了解一下其具体的用法。
1、ng-include 指令用于包含外部的 HTML文件。
2、包含的内容将作为指定元素的子节点。
3、ng-include 属性的值可以是一个表达式,返回一个文件名。
4、默认情况下,包含的文件需要包含在同一个域名下。
特别值得注意的几点如下:
1.ng-include,如果单纯指定地址,必须要加引号
2.ng-include,加载外部html,script标签中的内容不执行
3.ng-include,加载外部html中含有style标签样式可以识别
这里的ng-include 可以包含微步的html 文件
直接引用第一关的文件 进行 xss
在进行包含导入的 时候要加入 ’
?src=%27http://192.168.0.129/xss_lab/level1.php%27
在输入了原来的js 代码没有反应
代码里面做了html 实体化 但是好像没有变化
这里既然html 实体没有用
就用 标签 搞个超链接
payload
?name=<a%20href=javascript:alert(1)>aaaa</a
<img src=x onerror=alert(/XSS/)>'
<p οnmοusedοwn=alert()>哈哈哈</p>'
十六题
传入的值在 center 里面
看刚好下面有个 img 标签
试着用img 标签 去xss
这里又进行了实体化
还有一种方法就是%0a 回车 代替空格
payload
<img%0ascr=x%0aοnerrοr=alert(1)>
源码分析
就是过滤了空格 / script
十七题
这里的题需要 flash 插件的浏览器 我这里没有 所以还有一种办法
修改php 文件 里面的swf 为 index.png
看源代码 知道他的传参点在于 arg01 arg02
这里看着好像没有过滤和闭合 引号
添加个点击事件试一下
onclick 前面要有个空格
οnclick=alert(1)
十八题
和上题一样的
写个点击事件
οnmοuseοver=alert(‘xss’)
οnlοad=alert(1)
FLash XSS
最后两题 看下面师傅 涉及到知识盲区了
https://blog.csdn.net/u014029795/article/details/103213877
https://blog.csdn.net/u014029795/article/details/103217680