XSS实战(Level1-10小试牛刀)

文章目录

  • XSS实战
    • 说明
    • level1
    • level2
    • level3
    • level4
    • level5
    • level6
      • strtolower()函数
        • 说明
        • 参数
        • 范例
    • level7
    • level8
        • HTML实体转码
    • level9
      • PHP strpos()函数
        • 定义和用法
        • 相关函数:
        • 语法
        • 技术细节
    • level10
    • 总结:

XSS实战

说明

环境

Metasploitable2-Linux

步骤:

1.	判断是否存在XSS攻击的可能(提交的内容,页面会显示出来)
2.	判断可输入内容在标签内(属性)还是值
3.	判断闭合(在标签内部的话就需要提前闭合,使XSS的攻击代码生效)
4.	判断是否过滤某些字符(对于<>script这种特殊字符,一旦被过滤,就需要通过大小写,替换,转义等方式来改变)

常用XSS攻击代码




onmousemove=javascript:alert(1)
onclick=alert(1)

level1

可见,name提交的内容就是页面显示的内容,及存在XSS攻击的可能性


XSS实战(Level1-10小试牛刀)_第1张图片XSS实战(Level1-10小试牛刀)_第2张图片

level2

1.通过地址栏可以看出,此关卡的提交数据的变量名使keyword,且输入的内容会直接显示在页面上个,说明可能存在XSS漏洞,提交XSS的弹窗代码后,并没有直接弹窗

2.判断提交的内容是否在标签内,一般在输入框内的,肯定在标签内

3.判断闭合,使其input标签提前闭合

">
"用于将value的闭合,>用于对input标签的闭合

XSS实战(Level1-10小试牛刀)_第3张图片XSS实战(Level1-10小试牛刀)_第4张图片
XSS实战(Level1-10小试牛刀)_第5张图片查看后台源代码,可见与预期相符
XSS实战(Level1-10小试牛刀)_第6张图片

level3

1.与之前相同,先判断有无XSS攻击的可能,这里就不做演示了

2.判断输入的内容是否在标签内(直接在浏览器检查元素,看下页面的HTML标签即可,可见是在input标签内)

3.输入大小写,内嵌,都没有用,即并没有过滤特殊字符;猜下可能是用了实体转换,并没有执行弹窗代码

4.使用事件标签,此时就要判断input标签中的value使用的是何种闭合方式,经两次尝试,发现使用的是单引号闭合

为什么要使用事件来触发XSS漏洞?

因为使用常规的标签会被.htmlspecialchars().转换为字符,不会起作用,而事件则不会出现此类问题
'onclick='alert(1)
第一个单引号用于闭合value,即使得onclick值生效;第二个单引号用于对value后的第二个单引号闭合,即使alert(1)生效
这是一个鼠标点击时间,即提交完成后,需要点击输入框

XSS实战(Level1-10小试牛刀)_第7张图片XSS实战(Level1-10小试牛刀)_第8张图片XSS实战(Level1-10小试牛刀)_第9张图片XSS实战(Level1-10小试牛刀)_第10张图片查看网页源代码,可见value的闭合方式与预期相符
XSS实战(Level1-10小试牛刀)_第11张图片

level4

1.输入以下代码后,输入框中并没有<>,这种情况属于特殊字符的过滤,测试,发现大小写,内嵌,替换为标签都是没有用的

alert(1)

2.尝试事件标签,尝试两次,发现value的闭合方式为双引号,参考level2的闭合方式的解释
XSS实战(Level1-10小试牛刀)_第12张图片XSS实战(Level1-10小试牛刀)_第13张图片
XSS实战(Level1-10小试牛刀)_第14张图片

查看网页源代码,可见对< >进行了过滤,且value的闭合方式为双引号

XSS实战(Level1-10小试牛刀)_第15张图片

level5

1.可见,其页面是对出现script、on、的特殊字符中添加下划线且能够识别大小写,使其不能生效,即不能执行XSS的攻击代码

2.首先莫慌,始终牢记,没有绝对的安全;然后试试a标签,即超链接,思路是使用a标签来创建一个超链接,超链接的内容是一个伪代码,即XSS的弹窗,这样就能轻而易举的执行弹窗代码了

">XSS
相信看到这里,你一定能理解前面的">是什么意思吧,还是老套路,即为了闭合value属性,input标签

XSS实战(Level1-10小试牛刀)_第16张图片XSS实战(Level1-10小试牛刀)_第17张图片XSS实战(Level1-10小试牛刀)_第18张图片

HTML的a标签小试牛刀

<html>
<body>

<a href="https://blog.csdn.net/qq_41959899">Eichi-Bloga>

body>
html>

XSS实战(Level1-10小试牛刀)_第19张图片XSS实战(Level1-10小试牛刀)_第20张图片XSS实战(Level1-10小试牛刀)_第21张图片

查看网页源代码,可见与分析一致

XSS实战(Level1-10小试牛刀)_第22张图片

level6

1.此关增加了对超链接的href属性的下划线添加,使其不能生效

2.解决办法就是大小写的替换,如下代码

"ONclick="alert(1)

XSS实战(Level1-10小试牛刀)_第23张图片XSS实战(Level1-10小试牛刀)_第24张图片

查看网页源码,可见与预期相符

XSS实战(Level1-10小试牛刀)_第25张图片

那level5为什么不对事件进行大小写的替换,要使用a标签来创建链接呢?
仔细观察level5的源码就会发现,他是先将输入的内容进行小写的转换了,题外话:一定要注重细节

XSS实战(Level1-10小试牛刀)_第26张图片

strtolower()函数

(PHP 4, PHP 5, PHP 7)

strtolower — 将字符串转化为小写

说明

strtolower ( string $string ) : string

string 中所有的字母字符转换为小写并返回。

​ 注意 “字母” 与当前所在区域有关。例如,在默认的 “C” 区域,字符 umlaut-A(ä)就不会被转换。

参数

  • string 输入字符串。

返回值

返回转换后的小写字符串。   

范例

Example #1 strtolower() 范例

 
 $str = "Mary Had A Little Lamb and She LOVED It So";
 $str = strtolower($str);echo $str; // 打印 mary had a little lamb and she loved it so
 ?>  

level7

本关的script、on、href、均被过滤,且大写输入后被转换为小写,但是可以采用内嵌的方式,是其生效,即让页面过滤调内嵌的即可,有很多方法,以下列举出两个

"oonnclick="javascript=alert(1) onclick是一个属性,其还是在标签内的,第一个双引号用于闭合value的"
">alert(1) 
                    
                    

你可能感兴趣的:(安全渗透)