pikachu -Xss

复制代码
跨站脚本漏洞常见类型 危害:存储型>反射型> DOM型
1.反射型 交互的数据一般不会被存在在数据库里面,一次性,所见即所得,一般出现在查询类页面等。
2.存储型 交互的数据会被存在在数据库里面,永久性存储,一般出现在留言板,注册等页面。
3.DOM型 不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性也属于反射型。
xss漏洞形成的原因:
形成XSS漏洞的主要原因是程序对输入和输出的控制不够严格,导致“精心构造"的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害。
跨站脚本漏洞测试流程:
1.在目标站点上找到输入点,比如查询接口,留言板等;
2.输入一组”特殊字符+唯一识别字符”, 点击提交后,查看返回的源码,是否有做对应的处理;
3.通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件 (构造闭合) ;
4.提交构造的脚本代码(以及各种绕过姿势),看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
提示:
1.一般查询接口容易出现反射型XSS ,留言板容易出现存储型XSS ;
2.由于后台可能存在过滤措施,构造的script可能会被过滤掉,而无法生效或者环境限制了执行(浏览器) ;
3.通过变化不同的script ,尝试绕过后台过滤机制;
复制代码
  • 反射型xss(get)

  在输入kobe和其他敏感字符后,按照输入输出,判断出没有对字符进行过滤

 

   输入JavaScript语句后发现不能显示完全,查看源码更改输入字符限制

1
<input class="xssr_in" type="text" maxlength="20" name="message">

  • 反射型xss(post)

  和get差不多,参数传递为post

1
<script>alert('Hello')</script>

GET和POST典型区别:
GET是以url方式提交数据;
POST是以表单方式在请求体里面提交;

GET方式的XSS漏洞更加容易被利用, 一般利用的方式是将带有跨站脚本的URL伪装后发送给目标,而POST方式由于是以表单方式提交,无法直接使用URL方式进行攻击,

  • 存储型xss

  存储型xss又名永久性xss,每一次刷新页面都会弹出窗口。输入敏感符号没有被过滤。

  •  DOM型xss

1
2
3
在输入框输入字符以后发现输入的字符被放入一个href中,利用""构造闭合
 
输入#' onclick="alert('Hello')"><br>将其拼接成<a href="#" onclick="alert('Hello')">'>what do you see?</a>

  

 

 

 

  •  DOM型xss-x

1
2
他的输入从url中获得,构造闭合
#' onclick="alert('Hello')">

  

 

  •  xss之盲打

1
2
3
输入框一般是前端数据交互的地方。在输入框输入语句,然后在后端发现语句没有被过滤。这样在其插入语句,当管理员打开的时候就会执行插入的语句。
 
这不会立马得到结果,一般尝试输入后管理员执行相应操作才会有结果。

 

 

  •  xss之过滤

1
在本题中输入<script>时只有>说明script被过滤了,再尝试大小写,并没有被过滤。<br>然后通过oneerror事件属性(报错)也成功<img src=x onerror= " alert%28%27xss%27%29" /><br>也可使用其他方式对其编码

 

 

  •  xss之htmlspecialchars

1
2
3
4
5
6
7
8
9
10
11
htmlspecialchars()函数把预定义的字符转换为HTML实体。
&(和号)成为&
"(双引号)成为"
'(单引号)成为'
<(小于)成为<
‘>’(大于)成为>
 
可用的引号类型:
ENT_ COMPAT -默认。仅编码双引号。
ENT QUOTES -编码双引号和单引号。
ENT NOQUOTES -不编码任何引号。
1
2
3
4
5
在输入1'1'1"1<1>1&后发现只有'没有被过滤。
 
<a href="1" 1'1"1<1>1&'="">1'1'1"1<1>1&</a>
 
输入#' onclick='alert(666)'得到结果

 

  •  xss之href输出

1
输入Javascript:alert('Hello')<br>alert被执行,出现弹窗。在这里我们可以做出相应防范,只允许http,https,其次在进行htmlspecialchars处理。

  •  xss之js输出

1
2
3
4
5
6
查看源码后对$ms进行闭合输入:x'</script><script>alert('xss')</script>'$ms='tmac';if($ms.length != 0){        if($ms == 'tmac'){
            $('#fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('#fromjs').text('无论如何不要放弃心中所爱..')
        }执行alert($ms);

  

posted @   Bin_Go  阅读(46)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示