xss1-20通关
作者:互联网
level 1
观察三处箭头,发现是向服务器提交了一个name 参数,值为"test",从页面回显看,将name参数的值显示在了页面上,并且显示了name参数值的字符长度
查看其源码
将name 参数重新赋值为 <script>alert('xss')</script>
level 2
查看其url,发现是Get方式传递参数
查看源代码
先使用上一关的恶意语句操作进行弹窗
报错,查看源代码
可以看到<
和>
都被编码实体化了
用到sql注入里的思路将属性的引号和标签先闭合
将keywod的参数值重新赋值为"><script>alert('xss')</script>//
“>去闭合原先的”
//去注释掉原先的”
level 3
先在输入框中输入"test"进行尝试,发现不可以
查看其源代码
与第二关相似,但是还不确定有没有敏感字符过滤,编码等操作
构造弹窗测试一下
发现报错,看源代码
发现同一关一样< >
均被实体化
在服务器端查看level.php的代码
构造代码level3.php?keyword='onfocus=javascript:alert('xss') > //&submit=搜索
发现没有直接弹窗,是因为onfocus事件的特殊性造成的
onfocus 事件在对象获得焦点时发生
onfocus 通常用与<input>,<select>,<a>
点击当前页面的输入框就可以完成弹框了
level 4
这一关还是用的Get 方式请求参数并且该参数值在页面上有两处显示
先使用弹窗代码测试一下
仔细观察,发现输入框中和我们输入的不一样,没有< >
查看网页源代码
在第15行中,将< >
编码转换了
在第16行中,将< >
删除了
使用上一关的代码
点击输入框触发事件进行弹框
查看源代码分析
17:将get方式传递到服务器端的keyword参数的值赋给str变量
18 19 :将变量中的< >
删除
20:对变量进行编码然后显示在页面上
22:将去除< >
的变量值插入到<input>
标签的value属性值中
level 5
查看网页源代码
发现在我们的恶意代码中添加了_
使用之前的代码进行测试
这次没有成功出发弹窗,查看网页源代码
看了源代码后,发现对onfocus这一类的事件字符也进行了防范
构造下方代码
从页面回显可以看到一个xss的链接
点击链接即可触发弹窗的js代码
查看这一关的源码
17:将get方式传递到服务器端的keyword参数的值进行全小写的转换,然后赋值给str变量。
18 19 :通过str_replace()函数来破坏变量值中的敏感字符的语义。
20 :通过htmlspecialchars()函数处理之后显示到网页上,
22:直接将进行敏感字符处理之后的变量值插入到标签的value属性值中。
level 6
先用test测试一下,看源代码
尝试使用恶意代码
再查看源代码
发现其中< > 被编码了
还有在script字符中插入了_破环语义
尝试事件触发的代码
查看源代码
可以看到在value属性值中也插入了_符号防止xss的发生
尝试上一关的代码
尝试大小写混写是否可以绕过
点击链接
level 7
先试一下
看网页源代码
发现其中将< >编码处理了并且将script字符直接删除了,试一下事件触发
看源代码
发现onfocus事件直接把on 字符删除了,javascript中的script字符也被删除了,不需要再尝试新的标签了,试一下大小写是否可以绕过
看源代码
大小写绕过失败,尝试双写关键字
其中将参数值转换成了小写,并将基本的关键字都删除了,但是只执行了一次,所以可以双写绕过
level 8
用test 测试,查看源代码
提交的参数值会插入到<input>
标签的value属性值中,一个会插入到下方的<a>
标签的href属性值中
查看源代码
< > 被编码了
在href属性值中script字符被插入了_字符破坏语义
用来闭合引号的引号也被编码了
onfocus一类的事件也被破坏了
大小写绕过失败
因此此处没有对关键字进行删除,所以就不进行双写测试
对于代码进行编码
对参数值做了小写处理并且对常用的关键字做了过滤处理,还将用来起闭合作用的引号做了字符实体替换
level 9
查看网页源代码
在<a>
标签中的href属性中没有出现该参数值,而显示的字符串,猜测对url地址做了匹配,只有包含正常的url地址才能添加到href属性值中,构造一个有正常url地址的恶意代码
语句中虽然显示在了href
属性值中,但是javascript
字符中被插入了_
,尝试使用大小写绕过试试
失败,尝试上一关的方法对关键字进行编码
17-23:与上一关一致
32 34 :判断如果字符中没有http://
的话就会返回false
接着在href
属性值中就会出现字符串
38 :判断成功后,返回第一次出现的位置
将该字符串插入到href
属性值中
level 10
看网页源码
在源码中有一个隐藏的表单
其中含有t_link t_hiatory t_sort
这样三个隐藏的<input>
标签
先测试一下
看网页源代码
这里有三个<input>
标签的话,也就意味者是三个参数
看那个标签能够被突破
从页面响应来看,有一个<input>
标签的状态可以被改变这个标签就是名
为t_sort
的<input>
标签,之前都是隐藏状态,但是通过构造参数响应发现只有它里面的值被改变了。
因此可以从该标签进行突破,尝试能不能注入恶意代码进行弹窗。
18 :说明是接收t_sort
参数值的
19 20 :会删除t_sort
参数值中的< >
level 11
查看网页源代码
可以看到像第十关一样有隐藏的表单
不同的是多了一个t_ref
的<input>
标签
尝试上一关的方法
页面没有反应
查看网页源代码
原来t_sort仍然是接受参数值的,但是里面的双引号被编码了
这样浏览器只能正常显示字符但是却无法起到闭合的作用了
进行抓包
可以看到在原始的请求数据包中并没有referer这个请求头,那么我们可以自己给它加上
referer :1111
构造代码
可以看到我们添加的referer头的值出现在了t_ref标签的value属性值中了。
接下来就是从这里突破注入恶意代码了,恶意代码成功插入了value属性值
中,接着将这个请求的响应放行到浏览器试试
成功弹窗了,说明通过referer头来提交恶意代码触发了xss
level 12
抓包尝试
两个值一摸一样
尝试闭合前面的value属性,然后构造恶意代码
level 13
与前几关很相似
出现了新的标签
猜测应该与http请求头有关,抓包测试一下
可以看到抓取的数据包中cookie头是有值的,而且这个值在响应的网页
level 14
直接进入第15关
level 15
看网页源代码
level 16
可以看到我们提交的参数值在页面中有一处显示位
看网页源代码
level 17
level 18
同上一关一样
level 19
level 20
标签:值中,20,查看,level,标签,xss1,源代码,参数值,通关 来源: https://blog.csdn.net/weixin_62420492/article/details/122642633