050 XSS通关小游戏——xss challenge

文章目录

  • 一:下载与部署
  • 二:通关过程
    • 首页
    • level-01 没有任何机制
    • level-02 双引号闭合标签
    • level-03 单引号闭合标签+html事件
    • level-04 双引号闭合标签+html事件
    • level-05 伪协议
    • level-06 xss变形,大小写绕过
    • level-07 双写绕过
    • level-08 自己试了没有成功,后续再补充

一:下载与部署

xss challenge是个有关反射型xss的测试通关挑战,一共有20关。
下载地址:xss challenge
(访问密码:donMkh)
下载之后解压,把得到的文件夹放在phpstudy的www文件夹下即可
050 XSS通关小游戏——xss challenge_第1张图片
 

二:通关过程

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

首页

050 XSS通关小游戏——xss challenge_第2张图片

level-01 没有任何机制

点击首页图片进入第一关,发现修改name的值,页面的显示也随之改变,这里我们首先直接试试
050 XSS通关小游戏——xss challenge_第3张图片
 

level-02 双引号闭合标签

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

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

进入第三关,发现keyword变成了writing了
050 XSS通关小游戏——xss challenge_第7张图片
我们点击搜索试试看,又变回keyword
050 XSS通关小游戏——xss challenge_第8张图片
我们就直接在hackbar里面修改为?keyword,然后试试?keyword=
发现没啥用。
右键打开页面源码,发现无论是h2标签的值,还是input的value值都被转义了,那是不是可以试试第二关的方法用'>闭合input标签呢,试了下发现没用,因为第二关的value值没有被转义。
050 XSS通关小游戏——xss challenge_第9张图片
那现在我们进入xss-labs-master(就是复制到www目录下的)文件夹,找到level3.php文件,打开看看。
050 XSS通关小游戏——xss challenge_第10张图片
发现有一个htmlspecialchars函数。百度一下这个函数。这里我截图下来了。
050 XSS通关小游戏——xss challenge_第11张图片
然后上述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/)'
050 XSS通关小游戏——xss challenge_第12张图片
 

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

尝试发现不行,觉得应该用">
050 XSS通关小游戏——xss challenge_第13张图片
发现都被转义了,那我们和上一关一样,考虑事件,这次使用双引号。"onmouseover='alert(/xss/)'
050 XSS通关小游戏——xss challenge_第14张图片
 

level-05 伪协议

还是一样的,首先尝试
发现不行,右键打开网页源码。
050 XSS通关小游戏——xss challenge_第15张图片
发现script被强行改成scr_ipt,参考上一节内容,有点像xss的变形。
我们查看源代码level5.php
050 XSS通关小游戏——xss challenge_第16张图片
发现进行了变形处理。此处只是针对">?keyword="onmouseover='alert(/xss/)'均被替换了,如下图
050 XSS通关小游戏——xss challenge_第18张图片
然后http://10.157.14.169/xss-labs-master/level6.php?keyword="click me
发现也不行
在这里插入图片描述
那么我们考虑XSS变形,比如替换大小写之类的。并且让input标签闭合
?keyword=">click me
050 XSS通关小游戏——xss challenge_第19张图片
这里我们可以查看level6.php源码
050 XSS通关小游戏——xss challenge_第20张图片
发现只做了 分隔字符 的过滤。
 

level-07 双写绕过

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

050 XSS通关小游戏——xss challenge_第23张图片
 

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>
 
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('"','"',$str6);
echo '
.htmlspecialchars($str).'">
'
; ?> echo '

.$str7.'">友情链接
'
; ?> <center><img src=level8.jpg></center> echo "

payload的长度:".strlen($str7)."

"
; ?> </body> </html>

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

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

所以我们可以构造payload:?keyword=javascript:alert(/xss/)

050 XSS通关小游戏——xss challenge_第25张图片
页面代码:
050 XSS通关小游戏——xss challenge_第26张图片
我没成功,但是别人的可以,不知道为啥了?????????????
网上的成功图:
050 XSS通关小游戏——xss challenge_第27张图片

--------------可以先用取巧的方法跳过这一关,进入下一关-------------
050 XSS通关小游戏——xss challenge_第28张图片
暂且到第八关,占个文章发布的位置,后续补上。
 

你可能感兴趣的:(网络安全,sql,web安全,安全)