xss.pwnfunction靶场网站简单8道题练习

本次练习涵盖如图青蓝色标识的8道题目:
[1.Ma Spaghet!](#1.Ma Spaghet!)
2.Jefff
[3.Ugandan Knuckles](#3.Ugandan Knuckles)
[4.Ricardo Milos](#4.Ricardo Milos)
[5.Ah That's Hawt](#5.Ah That’s Hawt)
6.Ligma
7.Mafia
8.Ok,Boomer

1.Ma Spaghet!

该题用到了innerHTML,如果get参数somebody有值就传参,没有就使用默认的somebody

如图,默认显示somebody ,规则说明:网页要显示警告1337,无须用户操作就要跳出警告,在Chrome浏览器运行

尝试传参,发现somebody被aaaaa代替了

尝试用<script>标签执行alert()函数,发现并没有生效,F12查看发现确实传参进去了

查阅官方文档发现HTML5中<script>标签被认为可能是跨站脚本而被禁用,不过只禁用了<script>一个标签,比如图片底下的<img>仍然可以xss攻击

根据上方图片的<img src='x' onerrer='alert(1)'>给somebody传参,成功显示警告1337

https://sandbox.pwnfunction.com/warmups/ma-spaghet.html?somebody=\<img src=1 οnerrοr='alert(1337)'>

2.Jefff

第二题把jeff传参到eval执行函数中了

闭合字段逃逸出eval()函数并执行alert()函数

https://sandbox.pwnfunction.com/warmups/jefff.html?jeff=aa";alert(1337);"

另一种方法:

https://sandbox.pwnfunction.com/warmups/jefff.html?jeff=aa"-alert(1337);-"

3.Ugandan Knuckles

如图,代码过滤了"<"和">"

发现页面多了一个框

于是在原本的<input>标签中加入onclick属性来执行alert()函数,发现能成功,但是需要用户手动点击

又考虑到有个onfocus可以按tab执行alert()函数,但仍需要用户操作,于是添加autofocus

最终成功告警

https://sandbox.pwnfunction.com/warmups/da-wey.html?wey=aaa" οnfοcus=alert(1337) autofocus="

4.Ricardo Milos

该代码会2秒后自动提交

默认提交

因为没有过滤,尝试写入xss代码,警告成功

https://sandbox.pwnfunction.com/warmups/ricardo.html?ricardo=javascript:alert(1337)

5.Ah That's Hawt

改代码过滤了 "[" , "]" , "(" , ")"

既然()不能用,选择将其转换成URL编码来绕过过滤

结果无法执行,F12查看代码发现()并没有被URL解释

思考是不是%的问题,将%也进行URL编码

加入%25后发现出现了%28和%29,但是没有被URL解释

将οnerrοr=location后成功警告

https://sandbox.pwnfunction.com/warmups/thats-hawt.html?markassbrownlee=\<img src=1 οnerrοr=location="javascript:alert%25281337%2529">

6.Ligma

如图,过滤了大小写和数字

可以去regex101.com网站测试正则过滤

jsfuck可以绕过这个正则,只是编码出来的字符串很长

还需要对其进行URL编码,才能被URL解释

最终成功警告

7.Mafia

如图过滤了"" , " ' " , ' " ', " + " , " - " , " ! " , " \ " , " [ " , " ] ",还有alert,但是()没有过滤,所以是可以使用函数的

因为开发者没有考虑到confirm()函数,可以投机取巧弹出警告

当然,也可以利用JavaScript的特性,构造函数后面加()可以直接执行,Function()(),

因为要绕过alert过滤,将其大写并转换回小写让JavaScript识别。

如图,成功告警

https://sandbox.pwnfunction.com/warmups/mafia.html?mafia=Function(/ALERT(1337)/.source.toLowerCase())()

通过查阅官方文档,发现了parseint和tostring两个函数可以进行进制转换


F12在控制台尝试转换进制,发现29进制只显示aler,而30进制显示alert,这是因为16进制是0-F,而30进制刚好对应到字母T

如图,成功告警

https://sandbox.pwnfunction.com/warmups/mafia.html?mafia=eval(8680439...toString(30))(1337)

location.hash可以输出#aaaa字符串如图,可以使用slice来将#去掉

外边再添加一个eval执行语句,成功告警

8.Ok,Boomer

DOMPurify这个过滤很厉害

尝试用<img>,发现有害字符串都被过滤了

尝试<a>,发现也被过滤了

选择不传参,默认页面下发现OK找不到,回到上头发现有一个定时函数提到了OK

如下图F12控制台,发现该函数下的字符串可以被输出

考虑到href可以调用函数,尝试加入JavaScript:alert(1337),发现仍被过滤

通过在github搜索DOMPurify,找到了其变态的过滤机制,发现有白名单

尝试其中一个cid来代替JavaScript,发现成功告警

替换成另一个白名单callto发现也能告警

相关推荐
難釋懷3 分钟前
Redis网络模型-IO多路复用-select方式
网络·redis·bootstrap
程序员Sunday4 分钟前
爆肝万字!这应该是全网最全的 Codex 实战教程了
前端·后端·ai编程
aircrushin4 分钟前
朋友用trae搭建的工具,解决了旅行拍照共享的大事儿
前端·后端
呉師傅5 分钟前
统信UOS如何安装本地打印机驱动以及URL查找网络打印机并安装驱动方法
运维·服务器·网络·windows·电脑
九思十安5 分钟前
HNU2026-计算机系统-笔记 5 汇编进阶
汇编·笔记
ZC跨境爬虫10 分钟前
跟着 MDN 学 HTML day_41:(DOMParser 接口详解)
前端·javascript·ui·html·音视频
Ogcloud_oversea13 分钟前
SD-WAN 技术架构解析:控制平面与数据平面的解耦实践
运维·网络·网络协议·网络安全·信息与通信
光影少年23 分钟前
useLayoutEffect 和 useEffect 区别、使用场景
开发语言·前端·javascript
奋斗的小乌龟33 分钟前
langchain4j笔记-05
笔记
LIO34 分钟前
掌握 React useEffect:核心概念、使用技巧与常见陷阱
前端·react.js