xsslab

文章描述了一次XSS跨站脚本攻击的破解过程,涉及HTML实体编码、PHP的htmlentities函数、onclick函数、href属性、Unicode转ASCII编码以及AngularJS框架的ng-include等技术,展示了如何通过各种编码和技巧绕过过滤机制执行恶意脚本。
摘要由CSDN通过智能技术生成

开始耍咯。

点击图片

刚开始,我们用最原始的<script>alert(1)</script>

成功来到第二关

再试一次<script>alert(1)</script>发现果然不行了,查看源代码发现要闭合

加入闭合"><script>alert(1)</script>

成功进入下一题

试一下‘<script>alert(1)</script>不行,查看源代码,发现后台对<>进行了html实体编码,在php中利用htmlentities()函数进行html实体编码,但是这个函数默认不过滤单引号,所以我们就利用这与一点。利用

onclick函数进行渗透 ' οnclick='alert(1)

(解释一下onclick函数,正常格式的onclick是这样的οnclick='alert(1)',这个函数是在点击的时候触发的,之所以我们注入代码是这样的' οnclick='alert(1)是因为onclick函数得在一个标签中才能被浏览器识别,所以我们第一个单引号是用来闭合value='这个单引号的,第二个单引号是用来和'>这个单引号形成闭合构成onclick正常的语句的,而且,第一个单引号和onclick 中间得有空格,这样onclick才能被识别出来是个函数 )

第四题和第三题大同小异,只不过是闭合符号变了,改成" οnclick="alert(1)就可以了

第六题做起来发现script和on事件都会被插入下划线导致无法被执行,大小写也有过滤,所以我们转用另外一种更优雅的姿势渗透它"><a href="javascript:alert('xss');">xss</a>这是a标签,用于插入链接的一个函数,href中有我们的渗透代码。点击链接直接进入下一关

到了第六关我们继续用上一关的代码发现这一关对href函数进行了插入下划线,我们改变大写试试,成功啦!

"><a Href="javascript:alert('xss');">xss</a>

到了第七关我们继续尝试上一关的代码发现这次后代直接把我们script和href字符串直接替换为空,那这样子我们直接尝试双写绕过"><a hrhrefef="javascrscriptipt:alert('xss');">xss</a>,成了!

在这题我们发现后台把尖括号和双引号都进行了过滤,导致我们无法闭合所以,我们使用unicode转ascii编码进行绕过&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;

成了!

第九题沿用上一题的方法不行了

他会检测连接合法性,我们用http://www.baidu.com可以放入,那我们就思考他是不是检查http://标志来判断合法性的延续上题的方法加上//http://

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;//http://

成功注入!

一开始我们发现有三个参数,都是隐藏类型,那么这三个都能传参payload吗?显然是不行的!我们得找到能够传值且回到我们前端的那个参数。所以我们就利用url传值一个一个试,

然后我们发现只有t_sort是可以的,这时候就开始我们的尝试。

最简单的开始

很明显不行,后台过滤了尖括号,有没有不要尖括号的方法?有!之前用过的onclick不用尖括号,但是还有一个问题就是onclick事件需要对话框或者按钮来点击触发,可是这一关没有按钮和对话框,那怎么办?看着这个input标签,突发奇想,没有的话那我们就用他的input标签造一个按钮!

t_sort="type="submint" οnclick="alert()

成功构造!看看源码

很完美,前端浏览器把我们输入的语句和源码组成在了一起解析!

来到第十一关,已经过半了加油!

第十一题打开先看源码

发现多了一个参数,并且里面是我们上个关卡构造的payload,这里我们就清楚了这关考了一个referer

我们打开火狐hack插件利用referer会返回浏览器的特性进行攻击

"type="submint" οnclick="alert()

成功显示出来我们的提交框

进入下一关!

老样子查看源码发现跟上题差不多只不过从referer变成user-agent

成功进入下一关!

继续查看源码

发现这一题是用的cookie,那我们继续尝试前两题的解题思路

但是不行,是不是有什么东西不对劲 ,抓个cookie看看

果然啊,作者隐藏了user,那这下我们就知道了浏览器会返回的是user里的值而user在cookie里,怪不得我们在源码看不到user

后面的步骤像前两题一样就可以了

下一关!

这操作没看懂,直接改代码跳了

老样子先查看源代码

这次看上去好像没有什么可以利用的东西?

看到它引用了angular这是一个开源的框架,并且自带xss防御功能,这代表我们很难在这个界面去进行xss跨脚本攻击,那怎么办?

ng-include

我们可以引入其他界面的漏洞来进行攻击,但是这时有人就会问了那我们引入其他界面那弹窗之后跳转的是16关还是我们引入其他关卡的下一关呢?肯定是16关啦,因为ng-include不会载入js,它只会载入静态的页面,所以我们只是引入其他关卡的弹窗但是这个弹窗不会触发其他关卡的js事件,只会触发15关现有的js事件 

?src='level1.php?name=<img src=55.jpg οnerrοr=alert(1)>'

成功引用!

老样子先看源代码,发现没有什么东西,但是在url里有一个keyword,我们尝试输入一些东西

这次回显在center中而且过滤了script和斜杠那也就是说双标签是不行的,那我们用单标签加空格的url编码试试

失败了,我们用换行符url编码代替空格试试

<img%0Asrc=1.png%0Aοnerrοr=alert(1)>

成功!

17\18\19\20求大佬带带

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值