iwebsec靶场(XSS)

iwebsec靶场(XSS)

一、HTTP协议

1.HTTP请求方式
(1)常用
请求方式含义
GET请求从服务器获取资源
HEAD类似于GET请求,只不过不会返回实体数据,只获取报头
POST向服务器提交数据
PUT替换服务器的内容
(2)不常用
请求方式含义
DELETE请求服务器删除指定的资源
TRACE对链路进行测试或诊断
OPTIONS列出可对资源实行的操作方法,Allow字段里返回
CONNECT要求服务器和另一个服务器建立连接,充当代理
2.请求响应格式
(1)请求格式

请添加图片描述

(2)响应格式

请添加图片描述

3.特点
  • 请求应答模式
  • 灵活可扩展
  • 可靠传输
  • 无状态

二、客户端的cookie

  • key/value格式的文本
1.产生的流程
  • 浏览器第一次访问:

    服务器在响应中通过Set-Cookie头字段,下发Cookie

  • 浏览器保存在本地:

    • 硬盘:有过期时间的Cookie;位置C:\Users\15542\AppData\Local\Google
      Chrome\User Data\Default\
    • 内存:没有过期时间的临时Cookie,退出浏览器即失效
  • 浏览器随后访问:

    在请求头中用Cookie字段发给服务器

2.属性
参数描述
name=value一个name/value,就是一个cookie。name/value这个是必须的,其他的都是可选的。如果name重复,只取第一个
expirescookie的过期时间(格林尼治时间),超过这个时间,cookie就会失效。如果不设置,代表是临时的cookie,cookie在浏览器关闭的时候就失效了。
max-age与expires作用相同,用来告诉浏览器此cookie多久过期(单位是秒)。max-age的优先级高于expires
domaincookie对哪个域名生效。如果没有设置,就设置为服务器的域名。如果是临时的cookie,就不能设置domain
path除了匹配域名,还可以具体匹配到路径,如果域名和路径都匹配,那这个cookie就会起作用;如果是/,这个服务器所有的路径都可以使用这个cookie。如果没有设置,那个路径响应,path就是哪个值
secure只有HTTPS连接,才发送cookie到服务器
httponly告知浏览器不允许通过脚本document.cookie去更改这个值,同样这个值在document.cookie中也不可见
3.特点
  • 明文
  • 可修改
  • 大小受限
4.用途
  • 保持会话
  • 记住密码
  • 跟踪用户行为

三、服务器的session

  • 把身份信息存储在服务器
1.session校验
  • 开启会话:
    • session_start();cookie/login.php
    • 把session的字段值保存到以sessionid命名的文件
  • 保存字段:
    • $_SESSION赋值;cookie/login.php
  • 校验ID:
    • 从服务端的cookie中取出字段;cookie/index.php
2.session销毁
  • session_destory();cookie/logout.php
3.cookie和session对比

请添加图片描述

四、Javascript操作cookie

1.客户端读取cookie
  • alert(document.cookie);
2.客户端设置cookie
  • document.cookie=“username=wpc”;
3.修改
  • 新建一个同名的cookie,覆盖原来的cookie(属性必需一致)
4.删除
  • 把过期时间设置为比当前时间早的时间
  • setcookie(“username”,‘’,time()-1);

五、脚本注入网页:XSS

1.定义
  • 恶意攻击者利用web页面的漏洞,插入一些恶意代码,当用户访问页面的时候,代码就会执行,这个时候就达到了攻击的目的。
  • 除了JavaScript之外,这个脚本也可以是Java、VBScript、ActiveX、Flash等等
2.分类
(1)反射性(包括DOM型)
  • 流程

请添加图片描述

(2)存储型
  • 流程

请添加图片描述

  • 利用点:文章、留言板、公告板、评论……

六、靶场地址:http://iwebsec.com/

七、反射型XSS漏洞

  • 弹出cookie

    /xss/01.php?name=<script>alert(document.cookie)</script>
    

    请添加图片描述

八、存储型XSS

  • 查看源码

    <?php
    
      require_once('../header.php');
      require_once('../sqli/db.php');
      ?>
    <html>
    	<head>
    		<title>存储型XSS漏洞</title>
    	</head>
    	<h2>存储型XSS漏洞</h2>
    		<div class="alert alert-success">
    			<p>请输入你的留言信息</p>
    		</div>
    		<form  method="get">
    		<input type="text" name="name">
    <input type="submit" value="submit">
    </form>
    	<body>
      <?php
      if(isset($_GET['name'])){
    	$name=$_GET['name'];
    	$sql="INSERT INTO xss set name='$name'";
    	$result=mysql_query($sql);
    	
    	$sql="SELECT * FROM xss";
    	$result=mysql_query($sql);
    	}
    	else{
    		exit();
    	}
    	if ($result) {
    		?>
    		<table class='table table-striped'>
          <tr><th>id</th><th>name</th></tr>
    		<?php
    		while ($row = mysql_fetch_assoc($result)) {
    			echo "<tr>";
        			echo "<td>".$row['id']."</td>";
        			echo "<td>".$row['name']."</td>";
        		
    			echo "</tr>";
    		}	
    		echo "</table>";
    	}
    	else 
    	{
    	print_r(mysql_error());
    	}
      
    ?>
    
  • 输入框中输入payload,代码被执行,而且被存入到了数据库中

    <script>alert(document.cookie)</script>
    

    请添加图片描述

九、DOM型XSS

1.DOM
  • DOM型XSS就是基于DOM文档对象模型的

  • 对于浏览器来说,DOM文档就是一份XML文档,当有了这个标准的技术之后,通过JavaScript就可以轻松的访问它们了。

  • 结构

    请添加图片描述

2.利用原理
  • 客户端JavaScript可以访问浏览器的DOM文本对象模型是利用的前提,当确认客户端代码中有DOM型XSS漏洞时,并且能诱使一名用户访问自己构造的URL,就说明可以在受害者的客户端注入恶意脚本。利用步骤和反射型很类似,但是唯一的区别就是,构造的URL参数不用发送到服务器端,可以达到绕过WAF、躲避服务端的检测效果。
3.利用
  • <svg/onload=alert(document.cookie)>
    

    请添加图片描述

十、XSS修复实例

1.查看源码
<?php require_once '../header.php'; ?>
<html>
	<head>
		<title>XSS修复示例</title>
	</head>
	<h2>XSS修复示例</h2>
		<div class="alert alert-success">
			<p>/04.php?name=iwebsec </p>
		</div>
	<body>


<table class='table table-striped'>

<?php

	if(isset($_GET['name'])){
		$name=$_GET['name'];
		echo "<h2>"."Hello ".htmlspecialchars($name)."<h2>";
	}else{
		
		exit();
	}
?>
</table>
2.htmlspecialchars函数
  • htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体

    预定义的字符是:
    
    & (和号)成为 &amp;
    " (双引号)成为 &quot;
    ' (单引号)成为 '
    < (小于)成为 &lt;
    > (大于)成为 &gt;
    
3.原理
  • htmlspecialchars函数将<>等字符进行了实体转移,从而使构造的payload失效
    请添加图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

果粒程1122

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值