freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

合天网安实验【XSS进阶一、二、三】
蚁景科技 2020-10-20 17:04:58 299389
所属地 湖南省

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

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

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

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

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

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

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

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

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

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

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

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

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

# xss
本文为 蚁景科技 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
渗透测试和实践
metasploit技术
web
蚁景科技 LV.9
湖南蚁景科技有限公司主要从事在线教育平台技术研究及网络培训产品研发,专注网络空间安全实用型人才培养,全面提升用户动手实践能力。
  • 907 文章数
  • 674 关注者
蚁景科技荣膺双项殊荣,引领网络安全教育新潮流
2025-03-28
FlowiseAI 任意文件写入漏洞(CVE-2025–26319)
2025-03-27
路由器安全研究:D-Link DIR-823G v1.02 B05 复现与利用思路
2025-03-18