xss练习

做了一个xss弹窗练习,不知道有的地方理解的或者操作的对不对,只是记录一些过程,如果有错还请指出。

https://xss.twosecurity.xyz/topic1?name=1   附上地址

要确定xss是在什么地方发生的,一个小方法就是先输入一个文本,自己要记住。然后查看源码,ctrl+f,查找就可以确定位置了。有的没有输入框就是在url的参数中。

1.输出在html中:

可以看到输入点在<p>标签中,所以先闭合再输入语句

</p><script>alert(‘xss’)</script>

可以看到弹窗成功。

2.xss输出在html属性中

发现输入点在href属性中

(1)首先我想到的是伪协议,于是有

javascript:alert(‘大魔王’);

这里用的是JavaScript的伪协议,大多数浏览器是不支持的,只有ie6支持,所以没有其他情况的话只有在ie6中才会有弹窗,当然也不是所有的属性值都能产生xss,通常只有引用文件的属性才能触发跨站脚本,href,lowsrc,bgsound,background,value,action,dynsrc。

(2)再想到的就是闭合标签

"><script>alert('大魔王')</script>

然后就直接弹窗,payload插入以后是下面这样子的

3.xss输出在script标签中

于是想到闭合标签,有了下面的额payload

</script><script>alert("456123")</script><script>

结果并没有痰喘,查看源文件发现变成下面这样

分析可能是因为过滤了引号和括号,然后就想到对其进行编码,这里进行的是url编码

</script><img%20src=1%20onerror=alert%601%60>

这里20%是空格,%60是括号,直接弹窗

4.xss输出在input value中

(1)首先想到的是闭合标签,于是有

"><script>alert('111')</script><s=" 

构造的payload,直接闭合了input标签,并且为了闭合后面的”> 也构造了一个s= ,没有什么实际意义,只是保证不出错

成功弹窗

(2)再想到的是用事件

" onclick="alert('111')" 

这样是没有弹窗的,需要点击一下输入框才会有弹窗

5.xss输出在textarea中

</h2><script>alert('111')</script><h2>

结果爆出系统错误,查看源文件

可以看到第三行是系统报错的弹窗,于是考虑是被过滤了关键词,于是换成大小写

<SCRIPT>alert("XSS")</script> 

成功弹窗,下图中的倒数第二行为插入的payload

6.xss通过innerHTML输出:

" onclick="alert('111')"  x="

原封不动显示出来,但是在源文件里面被过滤了

考虑可能是escapeHTML() 进行过滤,escapeHTML()会按照如下的规则进行转义:

于是想到下面,弹窗成功

<img src=1 onerror=alert(1)>

7.

<script>eval(location.hash.substr(1))</script>#alert(‘111’)

substr的意思从#开始执行JavaScript,就是alert('111')

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值