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发现也能告警

相关推荐
EricWang13583 分钟前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
September_ning3 分钟前
React.lazy() 懒加载
前端·react.js·前端框架
web行路人13 分钟前
React中类组件和函数组件的理解和区别
前端·javascript·react.js·前端框架
Yawesh_best23 分钟前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
超雄代码狂35 分钟前
ajax关于axios库的运用小案例
前端·javascript·ajax
长弓三石44 分钟前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
小马哥编程1 小时前
【前端基础】CSS基础
前端·css
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git
follycat1 小时前
[极客大挑战 2019]HTTP 1
网络·网络协议·http·网络安全
嚣张农民1 小时前
推荐3个实用的760°全景框架
前端·vue.js·程序员