其它xss文章
以xss-labs举例反射型xss注入的方式及基本思路
xss实验并对注入点、注入语句及危害知识总结
other article to be continue…
第一关
<1>解法:
直接在url栏的name=后输入:
<script>alert(‘forming is handsome’)</script>(这是一段js代码)
<2>解析:
那么如果我们注入的是一段能在客户端运行的程序的话,就是能达到恶意注入的目的,查看源码,发现没有做任何防御,我们试着注入在h2处注入的脚本。
<script>alert(‘forming is handsome’)</script>
第二关
<1>解法:
与第一关不同的是输入的地方不同,如果和第一关在相同位置上注入就会少返回一个“确定”值,所以要在网页中的输入栏输入
forming is handsome" οnfοcus=javascript:alert(‘xss’)>//
或者
forming is handsome"> <script>alert(‘forming is hand’)</script>//
<2>解析:
首先注入<script>alert(‘forming is handsome’)</script>,然后查看网页源码
可以发现在h2标签处的‘>’和‘<’被替换成了实体字符,用到的是htmlspecialchars()函数(想知道更多请自行搜索)。所以在此处是实现不了脚本注入的,但是看第一个input元素处‘<’和‘>’并没有被替换,所以在这里根据onfocus事件,可以实现脚本注入。输入
forming is handsome" οnfοcus=javascript:alert(‘xss’)>//
或者
forming is handsome"> <script>alert(‘forming is hand’)</script>//
当输入前者进去以后点击页面上的确定,待刷新以后点击一下输入框给onfocus事件一个焦点,网站就会自动通向下一关。若是后者则会自动弹出选框。
下图是前者的源码图。
第三关
<1>解法:
在与第二关相同的位置输入
forming’ οnfοcus=javascript:alert(‘handsome’) //
这里讲一个我发现的东西,那就是输入的字符串不能太长,不然无法注入成功。
毕竟我也想在每一个能输入forming is handsome的地方都输入,但是这个地方可能是开辟的空间太小这么长的字符串不能被存储,所以只能这么短。
<2>解析:
和之前一样都是进行尝试,输入:
<script>alert(‘forming is handsome’)</script>
再查看网页源码:
发现和第二关的不同之处在于在input处也转换了">","<",那么可以换一种onfocus事件的书写格式达到注入的目的,输入:
forming’ οnfοcus='javascript:alert(‘handsome’)
最后再与第二关一样触发onfocus事件,就可以过关。但最后有我一个小问题,我自己给了个解释,如果看到这里的各位有’地道的‘‘正确的’理解,欢迎指正。
图片中的input元素处的语句并没有闭合为什么不影响脚本注入?我的解释是,因为input标签是一种无内容标签,所以可以不接/,从而告诉浏览器末尾位置,而浏览器可以自动解析但是不影响,应该是应浏览器而变。
第四关
<1>解法:
forming" οnfοcus="javascript:alert(‘handsome’)
<2>解析:
输入:
<script>alert(‘forming is handsome’)</script>
以此判断一下情况
判断出来和第三关情况大致相同,只是在input处从原来由字符变成实体换成删去’>‘和’<’,但是我们输入的字符串中没有’>‘或’<’,所以我们输入和第三关一样的答案尝试,发现还是不可以。我查看网页源码以后发现,是包裹name的值的符号由单引号变成了双引号,所以理论上只需要在第三关的基础上把包裹name值得’改为”,但是需要注意的是(在第三关提醒过)可能是网站源文件中给这一空所留的空间太小导致,输入太长,是不能注入成功的。
第五关
<1>解法:
输入:
forming” ><a href=javascript:alert(’'is)>handsome</a>
<2>解析:
首先还是输入:
<script>alert(‘forming is handsome’)</script>
再查看源码
发现h2处的‘>’和’<‘被替换成了实体字符,而input处的‘<’和‘>’则没有被替换,同时‘script’被加上了’_’,证明script已经被屏蔽。与前几种情况都不完全相同,所以再输入:
forming" οnfοcus=javascript:alert(‘handsome’) //
判断一下
和刚刚情况一样,证明‘script’和’onfocus’都被屏蔽了。那么是时候请出另一种注入方式了,输入:
forming” ><a href=javascript:alert(‘is’)>handsome</a>
查看源码:
发现href没有被屏蔽,所以本质上是把有alert函数的文件以超链接的方式与网页连接,最终通过访问超链接的方式执行js脚本。
其它xss文章
以xss-labs举例反射型xss注入的方式及基本思路
xss理解进阶篇
other article to be continue…