本文已参与「新人创作礼」活动,一起开启掘金创作之路。
准备阶段
大家首先要去下载一下这个靶场。还要有一个phpstudy
第一关
第一关就是这样的,然后我们去看一下它的源码。
我们可以看到,它是没有任何的过滤的。而且根据网页的URL可以看出,它是get提交的。那我们就很好注入了。
name=<script>alert(1)</script>
注意,这个是填写在url上面的。
然后我们就可以看到有个弹窗。
第一关就这样结束了。
第二关
这边我们可以看到有个提交框,我们可以先试着输入点东西。
<script>alert(1)</script>
我们可以看到,它把我们输入的东西输出在了上面。那我们还是先看源代码吧。
我们可以看到,它对于我们的代码没有做任何的处理。仔细看value我们可以看到只是简单的一个双引号,那我们可以让这个双引号先闭合,然后直接输入自己的代码,看看会怎么样。那么代码也就可以直接写出来了。
"><script>alert(1)</script><"
成功之后同样也会跳出一个完成的不错的提示框,然后自动到第三关
第三关
这个和第二关有点相似的,也是一个输入框。我也是一样输入一点东西看看有什么效果。
我们可以看到这个跟第二关是一样的,都是输入框输入什么,上面就会显示些什么。那我们先看看源码吧。
我们可以看到第17行的value,我们输入的值已经被改过了,说明这一页是有一点处理输入的值,不像之前的两关。而且我们可以看到,value的后面是单引号,那我们就很容易知道,单引号估计是没有被屏蔽的。那我们现在可以用script吗?显然这个是不可以的。为什么呢?因为我们的很多符号都被屏蔽了,转换了格式,所以会不起效果。这个时候就要用到另一个方法了。
'onmouseover='alert(1)'>
这边用到的是onmouseover事件,具体的可以百度一下,这边就不过多赘述。注意的是,输入好之后,要把鼠标放到输入框上面才可以哟。
同样,也有弹框表示通过,并且来到了下一关。
第四关
第四关我们的处理也是一样的,先输入一点东西看看效果。没有起作用,那我们就源代码走起。
仔细看看我们的第17行的value,我们发现我们的左右括号都没有了,那我们试试上一关的通过方法。但是也不是直接的复制,咱们还是要看看的,发现它是双引号。
"onmouseover="alert(1)
我们看到这里我们就要知道,代码的植入并不是普普通通的,我们要根据上下文的内容来,要灵活。同样的,我们也要将鼠标放到输入框那里激发事件才可以通过。
第五关
依据上面的做法,我们其实已经很熟悉了。先输入点东西看看,然后看源代码。
我们看第17行的value,我们的script变成了别的,那我们再试试事件吧。
我们可以看到,我们的onmouseover也变成了o_nmouseover。现在我们的两把斧都没有用了,那我们咋办呢?那我们就试试第三把斧头。利用超链接。
"><a href="javascript:alert('1')">1</a>
这个时候提示框旁边就有一个1,点击一下就可以过关啦。
第六关
我们依旧像之前一样操作,先输入一些其他的内容看看,之后看源代码。
"><script>alert(1)</script><"
我们可以看到,我们的JavaScript遭到了改变。但是符号是保存完整的。我们看看onmouseover
"onmouseover="alert(1)
我们可以看到,这个也遭到了改变,那我们试试我们新的第三把斧头。
"><a href="javascript:alert('1')">1</a>
我们可以看到这个也是不行的也被改变了,这个时候我们咋办呢?第四把斧头好像也还没有出炉,咋办,很急
现在我们就把目光再转回到自己已经有的三板斧,我们修改一下,我们发现,它只是识别的每个字的前两个字符,那我们能不能试着变成大写,看看行不行。
"><SCript>alert(1)</script><"
"ONmouseover="alert(1)
"><a HREf="javascript:alert('1')">1</a>
这个也是网络安全吸引我的地方,我们是在和网站的制作者斗争,我们都在抖小聪明,就看谁掌握的多,就看谁会做出改变。
第七关
现在我们先试试我们改变过的武器行不行。结果当然是不行咯
我们看到我们的script全部都没有了,都被屏蔽了,我估计其他的都是一样的,那我们现在怎么办呢?铸造第四把斧头的老师傅在睡觉,我们又只能看着自己已有的三板斧了,大小写已经用过了,那我们还能怎么办呢?
这时候我看到了桌子上一模一样的两个水杯,两个?那我们能不能试着把里面的字母多写几个看看。说时迟那时快,我就瞧准了我的第一把斧头。对它进行修改
"><scscriptript>alert(1)</scscriptript><"
这样我们就可以通过了。
第八关
我们试试上一关我们改过的一把斧
结果是明显的。那我们看看我们的值被怎么修改了,这个时候我们就不在是看我们的value了,而是看第20行的href。我们可以看到,我们的script被修改了,双引号也被修改了。这个时候我们的第四把斧头造好了,而且这个十分强大,带了两个方法。伪协议和十六进制的替换。
javascript:alert(1)
这样我们又过关了。具体什么是伪协议和十六进制的替换,大家可以百度一下,这边不再赘述。
第九关
第九关我们可以看到,也是一个链接,那我们把上一关的代码拿过来试试看
这个时候我们看看它的href,它问我,我的链接合法吗?我咋办,嗯~怎么不算呢? 当然是不可能的啦,那既然它要合法的链接,那我们能答应吗?当然能啦,我们塞个百度网址看看。
javascript:alert('http://baidu.com')
结果就是通关啦
第十关
我们看到我们这个是没有输入框的,那我们就可以知道,这个是get请求,应该是在url上面做文章,那我们就看看吧。在url的keyword后面植入我们的代码。
"><SCript>alert(1)</script><"
结果当然是不行的。 但是我们发现跟上面不一样的是,这边的17到19行的三行,好像没有体现在网页上,那这个怎么无缘无故出现在这边呢?那我们试试看能不能用这三个东西。
我们在url上面给t_link t_history t_sort赋值,发现之后t_sort有反应。那我们就可以在这边下文章了。
&t_sort=1" onmouseover=alert(1) type="1"
我们就会发现网页上面多了一个方框,方框里面写了个1,我们鼠标放上去的时候就是我们过关的时候,这种利用网页元素的方法也是一个技能点。
第十一关
这一关其实和第十关差不过多的,源代码里面也可以看出有些元素没有用到。
当然,试过之后发现都不太行,那我们就抓包一下,抓包之后我们可以看到一个元素Referer 我们只要修改一下这个就可以了。
Referer: " onmouseover=alert(/xss/) type="text
第十二关
因为后面的都是抓包结果,所以我就直接放抓包的图片。
我们可以看到的是,有一个User-Agent,我们对其进行修改。
User-Agent:" onclick=alert(/xss/) type="text
第十三关
源码
当我给t_link赋值的时候,我发现t_cook发生了变化,它让我调用它,那我就想着赋值,最后发现给我的是一个图片,那我就知道,这个地方时要抓包的。
这边我们修改的是Cookie中的user
onfocus=alert(/xss/) type="text
第十四关
这一关好像是有点问题的,这边我也不知道咋回事,大家可以百度一下
第十五关
源代码
分析:通过第一行以及我们提交的参数src的值被插入到<span>标签的class属性值中发现
这里用了angular js的ng-include,其作用相当于php的include函数。这里就是将1.gif这
个文件被包含进来。
既然这里可以包含html文件,那么也就可以包含之前有过xss漏洞的源文件
所以说代码就是
'level1.php?name=<img src=1
第十六关
源代码
这边的过滤就不是很全面了代码就直接来了。
<img
src=”111”
onmouseover=alert('1')
payload为:keyword<img%0Asrc=xss%0Donmouseover=alert('1')>
第十七关
还是继续看源代码
出的值都被做了实体化转义,无法闭合标签,但是问题在于本身embed标签可以加入事件,
可以在arg01,或者arg中加入事件去触发即可
代码就是
arg01=123%20onmouseover=alert('1')&arg02=b
第十八关
查看源码
其实这一关和上一关差不多 代码
arg01=123%20onmouseover=alert('xss')&arg02=b
第十九关
查看源代码
这一关是我网上查了教程的,因为我没有什么头绪,后来发现是要下插件才可以的,我想着之前都没有关系呀,但是我又不想下插件,所以我就直接试试他的方法。
这一关开始是flash xss了,首先下载页面中的flash,对源码进行分析,我用的是
JPEXS这款工具,首先定位getURL函数
代码就是
arg01=version&arg02=%3Ca%20href=%22javascript:alert(%27xss%27)%22%3E111%3C/a%3E
第二十关
来看源代码
这个也是网上找的教程,没有办法,能力有限,不过我会好好查漏补缺的,好好进步。
arg01=id&arg02=%22))}catch(e){(alert)(/XSS/.source);}//%26width=500%26height=500
总结
这样一套流程下来我意识到,漏洞是一定会存在的,黑客与白客之间的斗争一直都存在,不过不能否认的是,因为黑客的存在,我们的网络才会如此的安全,感谢那些默默付出的人们,我的能力很低,大家有什么看不懂的地方也很正常。我写博客也是为了自己以后复习翻阅,不过真的很开心能成为一个掘友,我会好好努力的。