xss挑战之旅level1-level7复现

Level1:

(1)

(2)

(3)

Level2:

(1)

(2)

通过点击 “ 搜索 ” 按钮,将输入框内的内容以 get 方式提交给

服务器上的 level2.php ;经过服务器的动态处理之后又会将参数 keyword 的值插入到 <h2> </h2> 标签之中以及 添加到 <input> 标签中的 value 属性的值内。

(3)用恶意语句进行弹窗,报错

(4)再次查看源代码,发现恶意语句被编码了:

(5)猜测在服务器端用 htmlspecialchars() 函数 对 keyword 参数的值进行了处理。 但是插入到 value 参数值中的恶意代码没有被编码而是直接原样返回:

(5)浏览器是无法执行在标签属性值中的 js 代码,需要 将属性的引号和标签先闭合:

Level3:

输入1测试一下;弹窗测试,发现报错,查看源代码,两处都将 < 和 > 这样的敏感字符编码成了 html 字符实体,猜测服务器端在这两处都用 htmlspecialchars() 函数进行了处理,通过 <input> 标签的一些特殊事件来执行 js 代码:

Payload:<input name=keyword value='11111' onclick='alert(1)'>:

但是仍然没有弹窗,是因为onfocus事件的特殊性造成的,onfocus事件在对象获得焦点时发生。onfocus通常用于<input>,<select>, 和<a>.(当使用鼠标点击该输入框时输入框被选中可以输入内容的时候就是该输入框获得焦点的时候):

Level4:

输入<script>alert(1)</script>进行测试,

继续测试11111' onclick='alert(1),

测试11111" onclick="alert(1),点击输入框后出现弹窗,


Level5:

输入<script>alert(1)</script>进行测试,

输入11" onclick="alert(1)进行测试,

输入11"><a href="javascript:alert(1)">123</a>进行测试,

Level6:

是大写绕过,

Level7:

分别输入<script>alert(1)</script>和111" onclick="alert(1)进行测试,

双写绕过,


posted @   向上的熊心  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示