XSS-LABS 1-19

之前学习xss时用过,发出来与大家交流

介绍

XSS,全称跨站脚本,XSS跨站脚本(Cross-Site Scripting,XSS(与css-层叠样式表冲突,所以命名为xss)),某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要注意的是,XSS不仅仅扩展JavaScript,还包括flash等其他脚本语言。根据恶意代码是否存储在服务器中,XSS可以分为存储型的XSS与反射型的XSS

首先介绍一下xss-lab,xss-lab是一个用于学习xss注入的平台,使用php编写的后台代码,一共有20关,每一 关都有不同的xss注入漏洞,我们要找出漏洞,并且通过漏洞注入代码,方可以通关。

​ 虽然每一关都是不同的,但是注入的方法只有几种,不过涉及的知识点是比较多而且广泛的,大多都是与前 端相关的。xss-lab后面会涉及flash xss攻击,后面将会单独作为章节。

​ 关于涉及到的知识点,会在注入的时候提到

XSS-LABS

LESS-1

GET型注入

传入name的值会在页面产生回显

尝试标签注入

name=

通关
源码

欢迎用户".$str."";
?>
注入之后:

欢迎用户

LESS-2

F12发现我们传入的值在input中,所以无法执行,我们就要考虑将其闭合执行后面的语句

">

通关
在input标签中,value属性没有过滤,所以有xss注入漏洞

本关在h2标签中有防御机制,但是在input中是没有的,所以可以在input中注入

LESS-3

第三关使用一下会发现<>被htmlspecialchars码了

在htmlspecialchars编码下特殊符号会被编译成其他编码

<  '<');  
>  '>');  
"  '"');  
'  ''');
闭合再构造就可以了'οnclick='alert("xss"),之所以不用">
  • 尝试伪协议poc:">
">

既然都被过滤,就从以下三个方面入手

 源码
 没有找到和".htmlspecialchars($str)."相关的结果.".'
'; ?>

LESS-7

继续使用伪协议poc:">

">

复写绕过

尝试复写绕过,构造新payload">

源码

没有找到和".htmlspecialchars($str)."相关的结果.".'
'; ?>

LESS-8

添加链接?尝试一下伪协议咯poc:javascript='alert(1)'

友情链接

尝试一下大小写呢?poc:javasCript='alert(1)'

友情链接

那就进行编码尝试(html;),payload:

javascript:alert(1)
可以用BP改

源码


'; ?>

LESS-9

同样也有友情链接

构造伪协议poc:javascript:alert(1)
友情链接

过滤了
源码


友情链接'; } else { echo '

友情链接
'; } ?>

得,原来他需要http://,重新构造payload:javascript:alert(1)//http://

友情链接

继续编码注入,javascript:alert(1)//http://
至于为什莫http要放在后面,还需要研究研究

源码审计


'; ?>
友情链接'; } else { echo '

友情链接
'; } ?>
payload的长度:".strlen($str7).""; ?>

LESS-10

直接没有输入框

看前端代码

没有找到和well done!相关的结果.

发现有三个隐藏表单,通过构造poc,查看回显源码

没有找到和<script>alert(1)<script>相关的结果.

通过上面得标签,直接修改元素,将hidden删除,点击触发xss

http://1b024d4e-711d-4af3-b296-723d4146cf57.node4.buuoj.cn:81/level10.php?t_sort=%22οnclick=%22alert(1)%22

构造poc看回显,只有t_sort有回显

源码

","",$str11);
$str33=str_replace("<","",$str22);
echo "

没有找到和".htmlspecialchars($str)."相关的结果.

".'
'; ?>

LESS-11

前端代码

发现有个t_ref字段是http referer的值,于是抓包修改

" type="text" οnclick="alert(1)

LESS-12

源码发现t_ua字段是http User-Agent的值,所以还是抓包修改 //换汤不换药

" type="text" οnclick="alert(1)

LESS-13

字段t_cook跟cookie的值一样,抓包修改cookie

Cookie: user=call+me+maybe%3F" type="text" οnclick="alert(1);

LESS-14

要考的应该是通过修改iframe调用的文件来实现xss注入

查看源码通过iframe标签引入了一个http://exofvoewer.org,

漏洞,上传一个含有xss代码的图片触发xss。

XSS-LABS 1-19_第1张图片

LESS-15

考点是angularjs

不太了解

找了其他大佬的WP学习了一下,原理差不多是以下这样

可以看到我们提交的参数src的值被插入到了标签的class

性值中,但是前面还有ng-include这样的字符。

ng-includeangular js中的东西,其作用相当于php的include函数。这里就

是将1.gif这个文件给包含进来。

/level15.php?src='level1.php?name=test'

说实话,后面的img有点没搞懂,百度一下//IMG标签不需要闭合

如果图片的src 所指的路径路径 不存在图片 则 弹出对话框 显示1

这么说我改成其他的也是可以的

LESS-16

并没有什么特殊的地方,只是参数值被插入到了

标签中。

过滤空格,script,/,使用%0d %0a做分割符

payload:

/level16.php?keyword=
http://127.0.0.1/xss//level16.php?keyword=
http://127.0.0.1/xss//level16.php?keyword=
http://127.0.0.1/xss//level16.php?keyword=

空格也被搞了,被实体转换了,使用%0a替代空格。

LESS-17

直接在embed标签插入onmouseover事件

用来定义嵌入的内容

需要提交两个参数,用ab代替,参数还被转义

我们提交的两个参数的值出现在了标签的src属性值中

比如此处可以用onclick事件测试一下

οnclick=alert('xss')

点击页面响应中显示该swf文件区域的时候成功弹窗
还有其他事件可以触发

http://localhost/xss_test/level17.php?arg01=a&arg02=b οnmοuseοver=alert(1)

LESS-18

和上一关一摸一样??直接用上一关payload

LESS-19

flash xss

你可能感兴趣的:(笔记,新人,网络安全,xss,安全,web安全,前端)