XSS-challenge之旅
注:已成功安装XSS-challenge平台为前提。
一、什么是XSS攻击
我们之前所进行的都是sql注入,通过破解网页相关联的数据库来获取我们所需要的东西。那这个XSS也是一种入侵手段,主要盗取管理员的cookie来进入管理员后台,来获取自己想要的东西。下面是百度对XSS的概括。
简单来说,XSS 是至少目前来说最普遍的入侵方式,通过在网页上能输入且有回显的地方输入代码,既使网页不报错,又能出现弹窗,被XSS接收平台接收。再由XSS接收平台生成一个假的cookie,再去替换原有的cookie,从而达到不需要管理员的账号密码就能成功进入管理员后台。
嗯~~,我闻到了知识的味道,那就让我们来看看这个XSS-challenge吧。(该挑战只需要成功弹窗即可算成功。)
level-1
根据XSS的定义(啊,我总结的那个),我们需要找输入的地方,还是很明显的,就在网址处,修改看看他它会不会有回显
嗯,会。那么下一步就是检查回显的地方在源代码里的位置,看看能不能通过代码指令成功弹窗。
似乎没有什么限制,那么我们只要保证html的基本格式触发弹窗就可以了,
如<script>alert(1)</script>
.
嗯,成功。
level-2
这就更加明显了,直接给了个输入框。
试试,看看会不会回显,以及在源代码里的位置。
嗯,这次可能就没那么容易,输入的值被<input>
框里的value""
给框住了,直接输入只有两种可能:
1、报错。
2、直接把我们输入的东西全部回显。
但无论是哪一种情况都不是我们想要的,所以我们只能去闭合输入地方的前后位置,确保不会报错的情况,完成弹窗。我们需要闭合前面的<"
还需要闭合后面的">
.
所以我们不妨试试"><script>alert(1)</script><'
嗯,成功。
level-3
来到第三关,依旧是熟悉的测试,确定位置。
看上去和上一题没什么变化啊,那就试试上一题答案。
嗯,果然不行,看上去好像是屏蔽了什么东西,看看输入的位置。
果然,屏蔽了尖括号,双引号,还将单引号自动转化为了双引号,
所以我们可以考虑另一种不需要尖括号弹窗。比如HTML DOM 事件,具体是什么呢,大家可以去菜鸟教程里搜素学习,传送门,总之可以理解为没有尖括号通过一些指令来触发的弹窗。
那我们就来试试123' onclick=alert(1)'
点击后没反应,似乎不太行,后面的引号虽然闭合了,但显得十分不必要,那既然这样,我们就把它们给注释了吧。
尝试123' onclick=alert(1)//
尝试点击。
嗯,成功。
level-4
依旧是尝试,找位置。
尝试前两题的答案,第一种不太行,再试第二种的时候发现,他似乎没屏蔽双引号。那我们就可以直接尝试123" onclick=alert(1)//
嗯,成功。
level-5
测试,位置
尝试前几题答案。。。。。失败。
这。。。。。似乎是在onclick
之间添加了个下划线。这就很难受了,果断求助大佬们的wp。
哦~~,原来这里需要用一个JavaScript的伪协议来触发弹窗。代码如下
"><a href="javascript:alert(1)">111</a>"
,其作用就是创建了一个触发弹窗的链接。
尝试点击。
嗯,成功。
level-6
测试,找位置。
尝试用之前的各种答案,不出意外不行,但JavaScript伪协议似乎有希望,问题是这个下划线怎么解决。
尝试大小写,能不能解决问题。
"><a hRef="javascript:alert(1)">111</a>"
有戏耶,尝试点击。
嗯,成功。
level-7
测试,找位置。
尝试用之前的各种答案,不出意外还是不行,但是level-4的方法似乎有希望。似乎是隐藏了onclick
的前两个字母
尝试双写on
感觉有戏,尝试点击。
嗯,成功。
level-8
唔,似乎,又要变一种答题方式了,不过我们还是按套路来。
测试,找位置。
尝试用之前的各种答案,不行,但是伪协议似乎和别的报错不太一样。
又是这个下划线,但是加了一个,还是尝试下大小写吧.
很遗憾不行,强制转化为小写。感觉差一点。。。还是没办法,借鉴下大佬们的wp了。
哦~~~~,果然差一点,要用16进制ASCII编码,来绕过屏蔽
尝试javascript:alert(1)
有戏,尝试点击。
嗯,成功。
level-9
跟上题差不多啊,但还是要测试,找位置,尝试之前答案。
不行,但是用level-8的答案,左下方的提示似乎有点意思。连接不合法?那什么连接是合法的呢。尝试在alert()
里填入百度的网站,这总算合法网站了吧。尝试输入javascript:alert(www.baidu.com)
嗯???还是不行吗,是我打错了吗,去复制百度的网址再试一次,尝试输入javascript:alert(https://www.baidu.com/)
还是不行啊,这可咋办啊。。。。。又要去借鉴了。
哦~~~~,原来判定的合法地址的条件是'http://'
。。。。这有点片面了哦,百度的网站确实是https://www.baidu.com/
啊。。。虽然http://www.baidu.com/
也能跳转,但显示的还是https
啊。。。。嗯。。。不懂。
尝试输入javascript:alert(http://www.baidu.com)
嗯??不是吧,怎么还没用。。。没反应。。。哦,对了还要注意吧网址用引号框起来。尝试输入javascript:alert('http://www.baidu.com')
注:要用单引号,双引号还是没反应。。。原因。。。我试了不行。。。。
嗯,成功。
level-10
又回到了没有输入框的题。。。不过没关系,网址上也能输入。。。。。
依旧是测试,找位置,尝试之前题的答案。
嗯,不行,但知道了屏蔽了尖括号。
通过观察源代码,可以知道,除了我们输入的那个参数外,源代码里似乎也自带了三个参数,尝试个这三个参数分别赋值,观察变化。
嗯,只有第三个有反应,又屏蔽了尖括号,那么尝试输入t_sort=123"onclick="alert(1)
嗯,感觉可惜,但是这个命令需要点击输入框或者按钮才能触发弹窗,题目没给,那我们只能自己加一个了。尝试输入t_sort=123"onclick="alert(1)" type="button
尝试点击按钮。
嗯,成功。
呼,做完了十个挑战,稍微休息一下下吧。
简单总结,今天的学习了解了XSS的各种触发弹窗选择,也了解了网页所设定的各种限制,也算是一种和网站管理员斗智斗勇的感觉吧。
去逛了逛大佬们的wp看了看他们的解题思路,感觉学习到了很多,也觉得自己还有很长的路要走。
加油,会更好的,冲!
。
。
。
。
。
。
。
。
。
。
。
。
。
。
其实还是有个小疑问的,就是level-3的一种解法
如下:
把alert()
用双引号给括起来,似乎也行。
尝试123'onclick'alert(1)
尝试点击,
嗯,成功。
但为什么,后面的一个单引号直接没了,有没有大佬能给解答一下下,万分感谢。。。。。