合天网安实验【XSS进阶一、二、三】

访客 253 0
本文来源:蚁景科技
合天网安实验【XSS进阶一、二、三】-第1张图片-网盾网络安全培训

直接get,neme=script>alert(1)/script>

合天网安实验【XSS进阶一、二、三】-第2张图片-网盾网络安全培训

用正则过滤了script>和/script>,我们name=Script>alert(1)/Script>

合天网安实验【XSS进阶一、二、三】-第3张图片-网盾网络安全培训

用正则过滤了script>和/script>(/i表示无视大小写),但只过滤一次,我们嵌套绕过neme=scscript>ript>alert(1)/s/script>cript>,或者不用script>标签,用name=img src='' οnerrοr=alert(1)>绕过。

合天网安实验【XSS进阶一、二、三】-第4张图片-网盾网络安全培训

匹配到script就报错,我们用name=img src='' οnerrοr=alert(1)>绕过。

合天网安实验【XSS进阶一、二、三】-第5张图片-网盾网络安全培训

匹配到alert就报错,我们用neme=script>confirm(1)/script>或neme=script>prompt(1)/script>绕过。

合天网安实验【XSS进阶一、二、三】-第6张图片-网盾网络安全培训

取得name,赋值到$_GET["name"]当做字符串在php被输出,首先我们要跳出字符串的双引号,其次我们要跳出echo范围,

所以我们用name=" ;alert(1);"  绕过,两边的双引号匹配原两边的双引号,让中间出来,alert(1)前后分号保证语法正确。

合天网安实验【XSS进阶一、二、三】-第7张图片-网盾网络安全培训

htmlentities函数是将函数里的字符转化为html实体,原本应该无论单引号双引号全部转的,但不知道为什么漏了个单引号没转,那么和第六题一样,我们可以利用单引号让alert(1)逃出来。构造语句name=';alert(1);'

合天网安实验【XSS进阶一、二、三】-第8张图片-网盾网络安全培训

这道题真是跳出思维。首先php里的$_SERVER[]数组是包含了很多网页信息的一个数组,而$_SERVER['PHP_SELF']指当前文件名,如题目当前文件名为example8.php,则$_SERVER['PHP_SELF']=example8.php

我们观察发现,这个数组的工作方式是将url中/XSS/及其之后的语句不做任何过滤地注入到表单form里面提交,演示如下

合天网安实验【XSS进阶一、二、三】-第9张图片-网盾网络安全培训

合天网安实验【XSS进阶一、二、三】-第10张图片-网盾网络安全培训

url中的/没有任何意义但是必须,用之分隔字符否则会报错。我们可以看到,我们可以通过这样在form表单这个元素里面随意添加属性。可以点击按钮执行js代码的属性,马山想到οnclick=alert(1),而form表单也有个οnsubmit=alert(1)也行。

那么我们就构造语句example8.php/"οnclick=alert(1) name="1   ,然后点一下按钮就弹窗了。(这里只是属性,所以不用分号)

合天网安实验【XSS进阶一、二、三】-第11张图片-网盾网络安全培训

document.write(location.hash)返回url中的锚,就是url中#之后的内容。所以我们直接把url#的hacker改成script>alert(1)/script>就行。

标签: xss

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~