XSS challenges刷题记录(一)

概述:最近写一个web的工具,需要掌握一定的javascript,正好学一下一直想接触的xss。

链接XSS Challenges

目录:
0x00 XSS原理
0x01 刷题 #1-10

在XMMAP环境下搭建一个简易的xss验证将源码放在\xampp\htdocs\XSS目录下 test.html,作为页面使用post方法,提交用户输入的输入。命名为name

				----test.html-----
<html> 
	<head>	
		<title> XSS测试</title> 
	</head> 
	<body> 
 		<form action="XSS.php" method="POST">  
 		请输入名字:  <br>  
 		<input type="test" name="name" value=""></input> 
  		<input type="submit" value="提交">
  		</input> 
  	</body>
  </html> 

XSS.php作为后台,使用REQUEST接收名为name的表单。并且将内容打印。

----XSS.php----
<html>
	<head>
		<title>测试结果</title>
	</head>
	<body>	
		<?php 	
			error_reporting(0);	
			echo $_REQUEST[name];	
		?>
	</body>
</html> 

访问 http://127.0.0.1:8080/XSS/test.html

test.html
输入测试数据Migraine,发现xss.php打印了数据,Migraine被存放在了之间。
Migraine
Migraine
code
当我们输入构造的语句的时候,浏览器会将这段语句解析为JavaScript输入

<script>alert("XSS")</script>

成功执行了js语句。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为PHP代码使用REQUEST接收name,所以使用get方法直接构造URL也是可以成功传参的。直接构造URL,效果完全一样。构造如下

http://127.0.0.1:8080/XSS/XSS.php?name=<script>alert(“XSS”)</script>

0x01 刷题
XSS Challenges这个网站很有意思,需要你成功构造Xss,弹窗出指定内容,才能进入下一关卡。
在这里插入图片描述
Stage #1
第一题是热身题在Search中输入<script>alert(document.domain)</script>即可弹窗
在这里插入图片描述
在这里插入图片描述
源码分析
我们输入的数据,会被打印在No result for 之后,所以这串代码会被解析为JavaScript
在这里插入图片描述
在这里插入图片描述

Stage #2
第二题是标签闭合问题。
输入<script>alert(document.domain);</script>之后并没有执行弹窗因为我们这次写入的代码,并没有被打印出来。
网页仅仅返回一个No Result for your Query
在这里插入图片描述

所以我们查看一下源码,找寻方法
在这里插入图片描述

我们找到了自己输入这个数据的地方,在这里寻找突破。发现我们的数据在value值里面所以我们只需要让这个input标签提前闭合,我们的代码就能被解析。
构造payload"/><script>alert(document.domain)</script>成功弹窗
查看HTML代码,发现此时js代码已经被解析
在这里插入图片描述

Stage #3
第三题先构造脚本,发现没有被解析。本来想法还是我们构造符号让标签闭合,但是网站将我们构造的双引号过滤了。
在这里插入图片描述

通过观察发现,传入参数并不只有search框内的数据p1,还有Choose a contry中的选项p2。所以通过brup抓包改包,传递我们的参数,发现p2并没有任何过滤。成功弹窗。
在这里插入图片描述
在这里插入图片描述
思考:一开始没想到能用改包来解决问题。因为当时想如果通过改包来进行xss,我们只是在xss自己,毕竟不能让受害者自己改包然后被攻击。如果是作为反射型XSS(这个练习网站的是反射型)改包方法并不能利用,但是作为存储型XSS,通过改包将数据写入网站数据库,还是有很大的可用性的。

Stage 4#
外观和第三题一模一样,方法当然是不可能一样的。但是还是抓包看一下。发现还有一个隐藏参数,上面还加了hackme,显然需要构造p3来xss。
在这里插入图片描述
查看源码,找到p3,type改为text就可以在网页上看到p3了。
在这里插入图片描述
直接构造"><script>alert(document.domain)</script>闭合标签成功执行xss
在这里插入图片描述

Stage #5

这一题外观和第二题一模一样 没有回显,也没有对敏感字符做任何过滤
在这里插入图片描述
思路和第二题一样还是闭合input
在这里插入图片描述
但是不同点在于,文本框内限制输入长度,无法构造一个完整的JavaScript语句。
在这里插入图片描述
直接用brupsuit抓包改包即可

Stage #6

第六题也是和第二题一样的模板
在这里插入图片描述
唯一区别是增加了对<的过滤,我们构造的脚本会变成乱码。
在这里插入图片描述
所以输入script的方式走不通了,经过观察发现 ”没有被过滤。所以value属性可以被闭合。
所以我们需要另一个知识点,不创建新的标签的xss
我们只在input中增加一个属性onmouseover=alert(document.domain)#onmouseover即被鼠标移动到上面就执行脚本" οnmοuseοver=alert(“XSS”) name=“1
在这里插入图片描述
所以payload可以写为”onmouseover=alert(document.domain) name="1
当鼠标移动到输入框的时候成功弹窗。

Stage #7
还是和上一题一模一样的模板,区别过滤了”,导致无法闭合。"onemouseover=alert("XSS") name="1
在这里插入图片描述

但是实际上,还是可以闭合的,在”后面添加一个空格" onmouseover=alert("XSS") name="1居然成功弹窗了,观察源码发现”并没有起到闭合作用,而是onmouseover前面的空格起到了分隔作用。
在这里插入图片描述

Payload>>" onmouseover=alert(document.domain)成功弹窗

Stage #8
这道题会让我们输入一个URL,然后在下方生成一个链接。主要考察在URL执行脚本语句的格式(如下)
javascript:alert(document.domain)
在这里插入图片描述
点击跳转,弹窗成功。

Stage #9
第九题终于回归了之前的模板,但是貌似需要IE浏览器并且是utf-7编码。
直接跳过这一题。跳过方法很简单,直接在页面源码中嵌入我们脚本即可。如下图所示
在这里插入图片描述
弹窗,进入下一题。

Stage #10
这道题没有过滤”,但是却直接把domain给过滤了。。。
在这里插入图片描述
查看源代码,可知这里只过滤了domain。#并且只过滤了一次
在这里插入图片描述
所以可以构造类似dodomainmain这样的结构,过滤一次生成的结果依旧时domain写入payload" onmouseover=alert(document.dodomainmain) name="1
成功弹窗

目前就暂时刷到这里,光速入门了一下xss。
弄pwn弄久了之后,玩玩渗透也是非常好的调剂手段。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值