博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
xss-labs详解(上)1-10
阅读量:2134 次
发布时间:2019-04-30

本文共 3308 字,大约阅读时间需要 11 分钟。

xss-labs详解

Level 1

源码

欢迎来到level1

欢迎来到level1

欢迎用户".$str."";//这里直接进行调用,根本没有过滤?>
payload的长度:".strlen($str)."";?>

在这里插入图片描述

在这里插入图片描述

http://127.0.0.1/xsslabs/xss/level1.php?name=%3Cscript%3Ealert(1)%3C/script%3E

最基本的,我们直接插入语句

<script>alert(1)</script>

Level 2

在这里插入图片描述

欢迎来到level2

欢迎来到level2

没有找到和".htmlspecialchars($str)."相关的结果.".'
';?>
payload的长度:".strlen($str)."";?>

这些被预编译了

在这里插入图片描述
在这里插入图片描述
这里我们看到还有一个submit,他是input的弹窗,我们在这里进行闭合

源码也可以看到,input的标签,并没有过滤,

"> <script>alert('xss')</script> //
我们闭合前面, 注释后面,完成!

htmlspecialchars

把预定义的字符 “<” (小于)和 “>” (大于)转换为 HTML 实体:

实体化函数,也是一种预编译的函数,相当于<>不起作用了
在这里插入图片描述

Level 3

欢迎来到level3

欢迎来到level3

没有找到和".htmlspecialchars($str)."相关的结果."."
";?>
payload的长度:".strlen($str)."";?>

在这里插入图片描述

正常输入并不可以,我们进行代码审计
使用了两次 htmlspecialchars
在这里插入图片描述
而我们的htmlspecialchars 默认不对'生效
正好这里的value是'闭合的
在这里插入图片描述
我们看到这儿,value也闭合了,onlick也闭合了,
只要点击value空白处,就能触发
' onclick='javascript:alert(/xss/)
'onclick='alert(/xss/)
' onmouseover='javascript:alert(/xss/)
'onmouseover='alert(/xss/)
这两个都可以

JavaScript伪协议

伪协议不同于因特网上所真实存在的协议,如http://,https://,ftp://,

而是为关联应用程序而使用的.如:tencent://(关联QQ),data:(用base64编码来在浏览器端输出二进制文件),还有就是javascript:

我们可以在浏览地址栏里输入"javascript:alert(‘JS!’);",点转到后会发现,实际上是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。

Level 4

在这里插入图片描述

","",$str);$str3=str_replace("<","",$str2);echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
';?>
payload的长度:".strlen($str3)."";?>

他这里只是把尖括号替换为了空

在这里插入图片描述
我们上我们的经典语句
发现了转义,他把尖括号转义了
在这里插入图片描述
但是这里并没有进行过滤
我们直接构造闭合value即可
在这里插入图片描述

Level 5

在这里插入图片描述

一套经典操作过后,发现,单引号没有被转义
在这里插入图片描述
在这里插入图片描述
发现第一个script被过滤了一点
那么我们再试试onclick
在这里插入图片描述
发现onclick也是
那么我们只能把input的标签闭合,然后在定义新的一个没有on的语句
"> <a href="javascript:alert('xss')">
在这里插入图片描述

没有找到和".htmlspecialchars($str)."相关的结果.".'
';?>
payload的长度:".strlen($str3)."";?>

我们来查看一下源代码

在这里插入图片描述
将script和on都替换了

Level 6

在这里插入图片描述

在这里插入图片描述
同样一套灌下去,发现单引号并没有,然后script被过滤了
在这里插入图片描述
我们使用第五关的代码,发现href也被过滤了
因为str_replace是区分大小写的
那么我们把script或者href大写区分一下就好了
在这里插入图片描述

没有找到和".htmlspecialchars($str)."相关的结果.".'
';?>
payload的长度:".strlen($str6)."";?>

查看一下源码,他增添了几个过滤

Level 7

在这里插入图片描述

经典语句之后,发现,被置为了空,那么我们双写绕过
在这里插入图片描述
在这里插入图片描述
发现可以,那么我们闭合之前的括号即可
在这里插入图片描述
"><script>alert('1')</script>

没有找到和".htmlspecialchars($str)."相关的结果.".'
';?>
payload的长度:".strlen($str6)."";?>

Level 8

在这里插入图片描述

标准一把梭,发现增加了友情链接
在这里插入图片描述
发现被禁了,同时将script给过滤了
在这里插入图片描述
在这里插入图片描述
我们测试又发现,onclick和jaavascript过滤了
基本都被过滤了,那么我们试试实体化编码绕过
就是将他编译过后的在存储进去,那么我们最终显示出来的就是我们需要的代码
https://blog.csdn.net/qq_25899635/article/details/90577336
可以看看这里的解释
在这里插入图片描述
这里我们将他实体化,
这是在线网站:
https://www.toolmao.com/381.html
在这里插入图片描述
java&#115;&#99;&#114;&#105;&#112;&#116;&#13;:alert(1)

';?>
友情链接';?>

strtolower

将所有变为小写,防止大小写绕过

Level 9

在这里插入图片描述

经典一句话,发现他说不合法,
那么猜一手匹配相应字符
哦~第八关的实体化代码输入不进去
那么我们猜一猜匹配的字符是什么
网址的话
猜一下http://
在这里插入图片描述
发现我们的链接存在了,
那么我们将上一关的代码补上
在这里插入图片描述
注意一定要将他http://注释掉
在这里插入图片描述

';?>
友情链接'; }else{
echo '
友情链接
';}?>

看代码,果然是匹配了http://

Level 10

在这里插入图片描述

第十个,打开只有一张图片,那么猜一下应该是从图片入手
在这里插入图片描述
看源代码,发现了三个隐藏的input框
在这里插入图片描述
我们把他隐藏的hidden删掉
没有发送按键,那只能在hackbar直接构造了
在这里插入图片描述
我们把所有的参数都改成我们的一句话,冲冲冲!
在这里插入图片描述
我们发现只有第三个有回显,和之前的很像,而且她过滤了括号
我们猜测使用javascript伪协议
在这里插入图片描述

在这里插入图片描述

实体化也没能绕过
说明他源代码并没有进行实体化,那么我们考虑考虑直接xss
在这里插入图片描述
发现也不可以,
在这里插入图片描述
我们把type删掉,然后点击空白框即可
&t_sort=" onclick= "alert(/xss/)

","",$str11);$str33=str_replace("<","",$str22);echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
';?>
payload的长度:".strlen($str)."";?>

将尖括号屏蔽了,其他没有什么,

你可能感兴趣的文章
【LEETCODE】310-Minimum Height Trees
查看>>
【LEETCODE】207-Course Schedule
查看>>
【LEETCODE】263-Ugly Number
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>
【LEETCODE】204-Count Primes
查看>>
【LEETCODE】228-Summary Ranges
查看>>