xss-labs挑战(二)

第六关:
看到第六关的页面:
xss-labs挑战(二)_第1张图片
我们输入一个字符看看页面的处理结果
xss-labs挑战(二)_第2张图片
可以看到跟前面的没什么区别,都是一个在

标签内,一个在value属性值中。

接着提交看看服务器端做了什么处理
xss-labs挑战(二)_第3张图片
可以看到上面的是将<、>进行编码了,而下面一个则是在script字符中插入_破坏语义
我们尝试进行触发尝试

http://192.168.89.139/xss/level6.php?keyword=' onclik=''alert('xss')

xss-labs挑战(二)_第4张图片
可以看到在on字符之间也插入了_来防止XSS的产生

这就有点过分了,还有什么办法能够成功执行js代码呐?
我们可以试试大小写混写来尝试能不能绕过。因为这里没有对<、>进行过滤,但是对script、on、href这样的字符应该是进行了字符替换。所以这里尝试构造如下语句

http://192.168.89.139/xss/level6.php?keyword=">  javascript:alert('xss')">xss//&submit=搜索

xss-labs挑战(二)_第5张图片
可以看到这一次点击页面响应中超链接成功弹窗了。这里值得一提的是因为我们改动的是标签中的href属性的大小写,而在html中对大小写是不敏感的。因此在浏览器端我们的恶意代码才能成功执行。

接着我们看看源文件的代码是怎样的
xss-labs挑战(二)_第6张图片
从源码来看服务器端做的防护措施比我们想象的要多得多

第七关:
看下第七关页面
xss-labs挑战(二)_第7张图片
我们用

xss-labs挑战(二)_第17张图片
可以看到在value属性值中的参数值被编码成了字符实体,在href属性值中script字符被插入了_字符破坏语义。
我们用之前的触发事件

http://192.168.89.139/xss/level8.php?keyword=" onfocus=javascript:alert(‘xss’)>\\&submit=添加友情链接

xss-labs挑战(二)_第18张图片
也没能幸免
我们在尝试大小写绕过

http://192.168.89.139/xss/level8.php?keyword=javaSCRIPt:alert(‘xss’)&submit=添加友情链接

xss-labs挑战(二)_第19张图片
还是不行,我们也不用进行双写绕过了,因为没有对关键字删除

有了之前的sql注入的经验,我们尝试编码
xss-labs挑战(二)_第20张图片
xss-labs挑战(二)_第21张图片
xss-labs挑战(二)_第22张图片
查看源代码
xss-labs挑战(二)_第23张图片
从箭头1处可以看到对参数值做了小写处理,在箭头2处对常见的关键字做了过滤处理,在箭头3处还将用来起闭合作用的引号做了字符实体替换

第九关
看下页面信息
xss-labs挑战(二)_第24张图片
xss-labs挑战(二)_第25张图片
页面的功能看起来跟上一关没有区别
一脸懵逼搞不清楚,那就构造语句来测试看看
xss-labs挑战(二)_第26张图片
不起作用,我们尝试触发条件
xss-labs挑战(二)_第27张图片
虽然关键字这些是没有过滤,但是闭合的引号被编码了,而且href属性值依然没有变化。

既然这里说链接不合法那么我们就提交一个合法的链接看看效果
xss-labs挑战(二)_第28张图片
可以看到这一次就正常了,猜测这里可能对url地址做了匹配
我们可以构造如下语句进行测试

http://192.168.89.139/xss/level9.php?keyword=javascript:alert('xss')http://www.baidu.com

xss-labs挑战(二)_第29张图片
可以看到语句虽然显示在了href属性值中,但是javascript字符被插入了_。
我们对关键字进行编码试试看
xss-labs挑战(二)_第30张图片
第10关
我们看下第十关页面
xss-labs挑战(二)_第31张图片
这一关和前面几关有所差异没有输入框,我们看下网页代码
xss-labs挑战(二)_第32张图片
代码中有个隐藏的表单,其中含有t_link、t_history、t_sort这样三个隐藏的标签。
既然只有一个显示位而且参数值是插入在

标签之中的,那么就用之前的方法先测试一下
xss-labs挑战(二)_第33张图片
关键字符被字符编码了
既然这里有三个标签的话,也就意味着是三个参数。那么看看能不能从此处下手

http://192.168.89.139/xss/level10.php?keyword=&t_link=" type="text"&t_history=" type="text"&t_sort=" type="text"

xss-labs挑战(二)_第34张图片
xss-labs挑战(二)_第35张图片
从页面响应来看,有一个标签的状态可以被改变。这个标签就是名为t_sort的标签,之前都是隐藏状态,但是通过构造参数响应发现只有它里面的值被改变了。因此可以从该标签进行突破,尝试能不能注入恶意代码进行弹窗

http://192.168.89.139/xss/level10.php?keyword=&t_sort=" type="text" οnclick="alert('xss')

xss-labs挑战(二)_第36张图片
xss-labs挑战(二)_第37张图片
查看源代码:
xss-labs挑战(二)_第38张图片
服务器端在箭头1处说明是接收t_sort参数值的。然后在箭头2处会删除t_sort参数值中的<、>。从这里来看的话这一关就只能是将js代码插入到标签的属性值中来执行而不能通过闭合标签引入新的标签来触发XSS了

本文章为自己搭建实验环境做过的,参考过一些资料,希望对你有帮助

你可能感兴趣的:(xss-labs挑战(二))