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); |
分类:
pikachu靶场通关笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码