当前位置: 首页 > news >正文

xss-labs-master通关记录(1-10)

XSS概述

xss跨站脚本攻击,本质是把用户的输入当作代码执行(拼接恶意的HTML代码,主要是js)

常用的js调用方式包括标签法,伪协议法和事件法

1.标签法

<script>alert(1)<script>

2.伪协议法

<a href=javascript:alert(1)>test</a>

其中href=javascript:xxx是伪协议,作用是:不跳转页面,直接执行后面的JS代码

3.事件法

" onfocus=alert(1) // " onerror=alert(1) //

靶场通关记录:

level1

猜测test为payload,直接进行尝试payload:

?name=<script>alert(1)</script>

通过:

level2

test为文本框输入的内容,尝试onfocus关键词。查看网页源码,发现为双引号闭合

构建payload:

" onfocus=alert(1) //

输入后没反应,但再次点击输入框时弹出:

通关。。。。。了吗?

发现小问题,这个弹窗一直弹,考虑能不能改进一下,尝试采用标签法:

"/><script>alert(1)</script> #双引号和/>用于源码闭合

通关并只弹一次!解决

level3

查看网页源码(因为xss的特性,根据源码构建payload是合理步骤)

尝试出入123,发现出现位置。于是采用和第二关相同的payload试一下,结果并未通关,查看源码发现未能进行字符串逃逸:

注意到输入的颜色与原本的符号不同,怀疑进行了转译操作,查看网页URL后的GET传参为:

level3.php?keyword="%2F><script>alert%281%29<%2Fscript>&submit=搜索

有点懵逼,尝试几番后准备观摩一下其他大佬的解题思路,发现我们的level3好像不一样!!其他的level3好像是单引号闭合,我怎么直接是双引号。没事,多尝试一下,万一能力大转飞呢,我也试试单引号。

果然被转译了,但是最后貌似出现了一个单引号?是否意味着单引号没有被转译?

尝试构造存在单引号,但不存在<>和/的payload

' onfocus=alert(1) //

通关!

但是怎么让它停止弹窗呢?有没有更好的办法呢

成功构造payload:

' onfocus='alert(1);this.blur()' //

blur:让输入框失去焦点。想要只弹一次就添加语句 this.blur()

level4

用第三关的payload试一下:' οnfοcus='alert(1);this.blur()' //

看来又被转译了,不过不太清楚哪些字符被转译了

继续尝试payload:"/><script>alert(1)</script>

发现”/>都被过滤了,尝试:'/scriptalert(1)/script

发现尖括号被过滤了,没有尖括号的只有事件法,而且源码是用双引号闭合的(感觉思路有点不对?)

构造payload:

" onfocus="alert(1);this.blur()" //

发现成功闭合value并添加onfocus,成功通关

发现最后的“和//并没生效,优化payload后:

" onfocus="alert(1);this.blur()

依然能通关!

level5

查看源码依旧双引号闭合,用第四关的payload:" οnfοcus="alert(1);this.blur()" // 继续尝试

发现onfocus关键词被修改了,猜测该关卡对一些敏感输入进行了处理,但双引号成功闭合了

尝试后发现script也被过滤了,改大小写也不好使

好想让我用标签法啊,不得不试试标签法:

" ><a href=javascript:alert(1)>test</a>

点击test,成功通关!

level6

双引号闭合,用第五关的payload:" ><a href=javascript:alert(1)>test</a>尝试

发现href被过滤了,而且后面的闭合貌似也有点问题,怀疑是过滤了什么符号

测试发现script和onfocus也被过滤了

大小写尝试:

" Onfocus="alert(1);this.blur()" //

成功过关!(看来没有检验大小写)

进一步测试发现,payload

" ><a Href=javascript:alert(1)>test</a> "/><Script>alert(1)</Script> " Onfocus="alert(1);this.blur()" //

均可过关。该关卡单纯考大小写

level7

依旧双引号闭合,继续尝试"/><script>alert(1)</script>

好家伙,script直接整个删掉了。改大小写也被过滤了

尝试" οnfοcus="alert(1);this.blur()" //

发现on被过滤了,再尝试" ><a href=javascript:alert(1)>test</a>发现href被过滤了

至此,script,onfocus和href均被过滤,且大小写也失败了

是否可以通过双写进行绕过?怀疑检测到相关词汇就直接删除,尝试构造双写payload

"/><scrscriptipt>alert(1)</scrscriptipt> " oonnfocus="alert(1);this.blur()" //

均能直接过关!

但双写href的payload却无法成功

" ><a hrhrefef=javascript:alert(1)>test</a>

源码中显示为:

忘了这里也有个script,双写绕过!

" ><a hrhrefef=javascrscriptipt:alert(1)>test</a>

成功!

level8

有个链接,点进去看看

发现url变成了注入的内容。查看网页源码内容:

输入好像会写入网页的href标签中,构造一个标签payload试试

""javascript:alert(1)>

尝试失败,查看源码发现为:

好家伙,&quot是将引号进行了转译,script关键词也被处理了。

on,herf也被添加了下划线进行了过滤。尝试后发现大小写也无法绕过。

有点没招了。本题存在一个网站自带的href功能,href这里肯定是突破口。但构建的闭合绕过语句均被过滤了,会不会因为是href本身有什么特点是用于突破的呢?

查阅发现href可以解析html十六进制实体,尝试构造相关字符编码:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(1) #内容为:javascript:aldrt(1)

直接过关!!

(这里lz其实有个小疑问,<a href=javascript:alert(1)>test</a>和<a href=”javascript:alert(1)“>test</a>为什么会有同样的效果呢?在网上查阅相关资料为:在HTML中,属性值通常使用双引号(")或单引号(')括起来,也可以在不包含空格、等号或尖括号等特殊字符时省略引号

level9

好家伙,我还什么都没做呢,就默认我不合法了(╯▔皿▔)╯直接拿上一关的payload试试

这哥们铁打不动,难道是要另外构造href?进行尝试:

加不出来?看字符颜色怀疑符号被转译了

把鼠标放”在您的链接不合法?有没有!"上,发现这居然直接就是一个网页链接!裂开

既然加不了,是不是要对这个链接进行修改啊?该链接为:

http://192.168.47.226/bachang/xss-labs-master/您的链接不合法?有没有!

在上一关查阅href相关知识时发现href可以直接链接网址url,提示也是链接不合法,是否需要插入合法的网页链接呢?直接拿劳模百度进行尝试:

https://www.baidu.com/

依然不行!怀疑是https的原因,尝试一下http,居然成功了!

瞬间思路打开,应该是需要在注入内容中包含http然后将其注释掉的方式进行,开始尝试。

过程中发现需要包含的内容为http://,构造相关payload:

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;:alert(1) //http://

成功过关!(本关同上一关一样也对关键词进行了过滤)

level10

GET传参,改url。开始尝试。发现输啥都没反应。

有点懵,查看网页源码发现有三个输入参数 : t_link,t_history,t_sort,怀疑这三是突破口,尝试。

?keyword=111&t_link=222&t_history=333&t_sort=444

再查看源码,果然有猫腻!

懂了!keyword不是注入点,t_sort才是!

尝试构造payload:

?keyword=111&t_sort=1"><script>alert(1)<script>

好家伙,居然还过滤了尖括号!考虑用onfocus构造,但又出现一个问题:网页上没有输入框。

于是要手动添加一个输入框(好吧其实是网页把输入框隐藏了,type=hidden就是用于隐藏),修改type类型即可。重构payload:

?keyword=111&t_sort=1" onfocus="alert(1);this.blur()" type="text

成功过关。

http://www.cnnetsun.cn/news/2788809.html

相关文章:

  • PCB元件库与封装库规范设计:从原理到实践
  • 第58篇|AI 失败态:网络失败、Key 缺失、模型失败如何提示
  • 实战应用:基于快马平台构建智能桌面助手宠物,集成提醒与信息展示
  • 萤石 ERTC 如何灵活支撑摄像头接入多人视频会议?
  • 物联网操作系统技术讲座深度解析:从理论到实战的竞赛赋能
  • iOS越狱终极指南:从iOS 17到iOS 26.5全面解锁iPhone隐藏功能
  • 基于GPS同步的分布式逆变器谐波电压补偿技术解析
  • 无线通信基础:频率、波长与天线设计的核心关系
  • 免费文案提取神器2026推荐:视频字幕+图片文字提取保姆级教程
  • CSDN AI数字营销不是万能药,但不用它=自动淘汰(20年招生顾问的3条铁律)
  • FPGA高级设计实战:从时序收敛到系统级优化的工程进阶指南
  • VisualCppRedist AIO:企业级运行时依赖管理系统的5大技术创新
  • 2026年PDF压缩到最小全方案:保姆级教程+免费工具+Adobe专业设置
  • 2026年AI编程工具全方位推荐:权威评测与选型指南
  • UltraEdit自定义VHDL语法高亮:提升硬件描述语言开发效率
  • 终极指南:如何用Carrot插件实时预测Codeforces评级变化
  • 硬件厂商如何用CSDN AI引擎实现线索成本下降63%?——基于27家头部厂商的A/B测试实证报告
  • ABB 工业机器人激光切割工作站离线编程仿真研究
  • OpenClaw保姆级配置教程(适用于Windows)
  • Miniforge 完全入门指南:从零撸到环境自由
  • 安规电容X与Y:定义、选型与EMC设计实战指南
  • Altium Designer ERC警告“Compiler Net has no driving source”的根源与解决指南
  • AI Agent友好型工具设计的5大底层原则
  • 当记忆密码成为数字枷锁:用自动化工具找回被遗忘的压缩包密码
  • 思源宋体CN终极指南:7种字重开源字体高效应用
  • 8051单片机跳转指令全解析:LJMP、AJMP、SJMP与JMP@A+DPTR的区别与应用
  • 补码原理深度解析:从模运算到硬件实现,统一计算机加减法
  • 正交矩阵:从几何定义到工程应用的核心原理与避坑指南
  • 抖音批量下载神器:3分钟实现效率革命,智能解放你的双手
  • uCOS-II在AVR Mega16上的移植实践:从Mega128裁剪到资源优化