Web发展至今,前端危害最大的是XSS(跨站脚本)和CSRF(跨站请求)漏洞。javascript
<from action="" method="get"> <input type="text" name="xss"/> 文本框 <input type="submit" value="test"/> 按钮 </from> <?php $xss=@$_GET['xss']; if($xss!==null) { echo $xss; } ?>
代码说明:php
包含一个表单,用于向页面本身发送GET请求,带一个名为xss的参数;php读取该参数且不为空则echo输出xss参数内容。这里没有设置任何过滤和检查机制,因此xss会执行任何的代码包含 )在输出弹窗后HTML代码也会被改写;html
反射型xss:前端
浏览器 —> 后端 —> 浏览器页面java
<form action="" method="post"> <input type="text" name="xss"/> <input type="submit" value="test"/> </form> <?php $xss=@$_POST['xss']; $con = mysqli_connect("127.0.0.1","root","123456");// 链接mysql mysqli_select_db($con,"xss");// 链接xss库 if($xss!==null){ $sql="insert into temp(id,payload) values('1','$xss')"; $result=mysqli_query($con,$sql); echo $result; } ?>
用户输入的内容仍是没有过滤,可是并非显示在页面中,而是执行php+mysql命令将内容插入到数据库中;mysql
mysqli_connect(servername/ip , username , password):sql
设置数据库的登陆地址,数据库登陆名,登陆密码等数据库
创建MySQL数据库链接后端
【PHP 5.5+ 再也不使用connect进行链接数据库,改用MySQLi或PDO_MySQL来进行链接】浏览器
mysqli_close() : 关闭数据库链接
mysqli_select:从数据库表中选取数据
mysqli_select_db():选取数据库
mysqli_query(参数/sql命令):执行sql命令,可使用参数存储一个sql命令也能够在query中直接写明sql命令
ps:在输入提交script脚本时候注意字符转义的问题哦
<?php $sql = mysqli_connect("localhost","root","123456"); mysqli_select_db($sql,"xss"); $shl="select payload from temp where id=1"; $result=mysqli_query($sql,$shl); while($row=mysqli_fetch_array($result)){ echo $row['payload']; } ?>
show.php文件的做用:
链接数据库打开xss库,执行sql命令查看temp表中的内容
上述的存储型XSS的流程是:
经过xss.php程序将xss脚本写入数据库中,在经过show.php查看存储在数据库中的xss脚本,以此达到解析脚本的方法。
xss数据从浏览器通过后端写入到数据库中,在通过后端调用数据库内容显示在页面上。
<?php error_reporting(0);//禁用报错 $name = $_GET["name"]; ?> <input id="text" type="text" value="<?php echo $name; ?>"/> <div id="print"></div> <script type="text/javascript"> var text = document.getElementById("text"); var print = document.getElementById("print"); print.innerHTML = text.value ;// 获取text值输出print </script>
对xss.php进行分析:
php接收一个name的get请求,input标签中 id:text得到了name设置的请求值,在script中,print输出并将text的内容一并输出,而text的值就是name的请求内容(经过URL进行构造)
而构造的URL:http://localhost/xss.php?name=< img src=1 onerror=alert(1)>
含义是:name为调用一个 1 文件照片信息(img),若是不存在报错弹出窗口(alert)并显示内容为 1 。
经过xss跨站脚本,来得到用户的Cookie和其余有用的信息,利用平台的特性,xss利用诸如:xss Shell ,BeEF,Anehta,CAL9000……