一.随堂笔记
1.网站:
(1)ES6 入门教程:https://es6.ruanyifeng.com/
(2)Mozilla:Mozilla |MDN 系列
一个社区可以在里面了解它旗下的开源软件(如火狐)的代码等
(3)go语言:Go 语言之旅 (go-zh.org)
2.XSS:
XSS(跨站点脚本)注入是一种针对Web应用程序的安全漏洞,攻击者利用该漏洞向Web页面中注入恶意代码,当其他用户访问该页面时,这些恶意代码就会被执行,从而使攻击者能够窃取用户的信息、篡改用户的数据,甚至控制用户的账户等。
分为存储形和反射形
3.cookie和session的区别
(1)存储位置:Cookie存储在客户端浏览器,Session存储在服务器端。
数据容量:Cookie的容量较小,一般不超过4KB;而Session可以存储更多的数据。
(2)安全性:由于Cookie存储在客户端,其中的数据可被用户和其他网站访问,因此安全性较低;而Session数据存储在服务器端,对客户端不可见,因此相对较安全。
(3)传输方式:Cookie通过HTTP协议自动发送给服务器,每次请求都会携带Cookie数据;而Session可以通过Cookie或URL重写的方式传递Session ID。
(4)生命周期:Cookie可以通过设置过期时间来指定存储的时间,可以是短期的或长期的;而Session默认情况下会持续到用户关闭浏览器或会话超时。
(5)应用场景:Cookie适合存储少量的数据,常用于用户身份认证、记住登录状态等场景;Session适合存储较大的数据,常用于购物车功能、跨页面数据传递等场景。
4.浏览器解析
HTML:第一个
这里有三种情况可以容纳字符实体,“数据状态中的字符引用”,“RCDATA状态中的字符引用”和“属性值状态中的字符引用”
URL:不能对协议类型进行任何的编码操作,不然URL解析器会认为它无类型
JavaScript:unicode不可以对特殊符号进行编码,例如:’ " \n
5.解码网站:在线工具大全 (lddgo.net);锤子在线工具网 - 首页 (toolhelper.cn)
二.课堂跟练pikachu靶场xss
1.反射形(get)
尝试插入,发现长度不够,于是右键打开检查更改长度限制
更改长度后攻击成功
其他尝试:还可以更改输入类型的限制
下载插件
使用插件更方便修改,不会有编码问题
用插件还可以自动注入攻击的语句
2.反射形(post)
注入攻击语句提交并用BurpSuite拦截发送到重放器可以看到类型是post,注入的message,以及如果放行会出现弹窗
3.存储型
用直接攻击出现弹窗
打开mysql查询pikachu表可以看到输入留言板的内容
三.课后作业
1.反射型、存储型、DOM型XSS特点和区别
(1)特点:
反射型XSS:
攻击脚本存储在URL或HTTP请求参数中。
用户访问包含恶意脚本的链接时,脚本会被直接发送到服务器端,但通常不会被服务器端处理或存储。
脚本在用户浏览器中执行,而不是服务器端执行。
只有通过特定链接或URL才能触发攻击,因此攻击者需要诱导用户点击特定链接
存储型XSS:
攻击脚本被存储在服务器端的数据库或文件中,通常是用户提交的内容。
当用户访问包含恶意脚本的页面时,脚本会在用户的浏览器中执行。
脚本可以在用户多次访问该页面时重复执行,直到服务器端的存储被清理或更新。
不需要用户再次点击特定链接,只要访问包含恶意内容的页面即可触发攻击。
DOM型XSS:
攻击脚本直接嵌入到网页的HTML中,通常是通过JavaScript操作DOM(Document Object Model)实现的。
脚本在用户的浏览器中执行,不需要服务器端的参与。
攻击者可以利用浏览器的DOM操作功能,如innerHTML或appendChild等,来插入或修改页面上的内容。
攻击通常发生在用户与页面交互时,如点击按钮、输入文本等。
(2)区别:
存储位置:反射型存储在URL或请求参数中,存储型存储在服务器端,DOM型直接嵌入HTML中。
执行位置:反射型在服务器端执行,存储型和DOM型在浏览器端执行。
触发方式:反射型需要用户点击特定链接或输入特定参数,存储型和DOM型通常在用户访问特定页面时触发。
影响范围:反射型影响范围有限,存储型影响范围更广,DOM型影响用户的交互体验。
生存周期:反射型XSS的生存周期最短,通常是一次性的;存储型和DOM型XSS的生存周期较长,可以持续影响多个用户会话。
2. fuzz字典生成工具
工具:upload-fuzz-dic-builder
下载地址:upload-fuzz-dic-builder:这是一个自动化工具,用于构建针对上传漏洞的模糊测试字典。只需简单命令行参数,即可定制字典,支持不同编程语言、Web中间件和操作系统。根据提供的上传文件名、后缀、语言等信息,生成更精准的测试用例,帮助你提升安全检测效率。在Burp Intruder中配合使用,效果更佳。打造你的专属Fuzz字典,从此扫描上传漏洞事半功倍!【此简介由AI生成】 - GitCode
字典:见资源
3. 到XSS挑战靶场打靶
(1)第一关
直接注入Payload
(2)第二关
首先尝试直接注入发现没有过关,右键检查查看代码,发现注入的payload被变成了字符串
于是在输入的时候在payload前面加上”>后面加上”<使上图的代码变为<input …value=””>payload<””>前后都闭合,payload独立出来攻击成功
(3)第三关
首先尝试直接攻击发现输入提交后,输入的内容有一部分消失了,查看代码发现有’存在,我们输入的payload有一部分被闭合到value了
由于无论输入什么都会在出现’的时候被闭合所以我学了一种新方法,用onfocus,
onfocus 是一个事件属性,它在获得焦点时会触发执行JavaScript代码,于是构造payload用’先将前面闭合,然后构造一个onclick,输入后只要一点击输入框就触发了弹窗完成了攻击
(4)第四关
这一关先输入上一关的payload尝试,发现被用”闭合了
构造payload:" οnclick=’alert(1),第一次输入的时候少改了一个闭合,于是,,,
重新构造payload:" οnclick=”alert(1),在value后构造一个闭合,同时弹窗代码也与后面的”闭合,注入后攻击成功,只要点击就触发
(5)第五关
输入payload测试发现被添加了一个_导致不能构成事件了
于是学习了使用伪协议
构造"> 1,先让前面闭合,然后一个JavaScript弹窗代码,点击链接即触发完成攻击
(6)第六关
用一个payload测试发现被添加了一个下划线
尝试大小写混用,发现没有下划线了,于是判断大小写混用可以绕过
在增加一个前后闭合,攻击完成
4. 解释《漏洞利用之XSS注入》
解:href后指定的应该是一个URL,但是这段代码里面不是HTML的编码,URL无法解析所以无法执行
解:\u0061\u006c\u0065\u0072\u0074(10)解码得到alert(10)是可以被JavaScript解释的会执行弹窗
解:不执行,因为u0027解码是单引号(')字符,unicode不可以对特殊符号进行编码
解:\u000a是一个 Unicode 转义序列,表示换行符,JavaScript将执行换行
解:这段文本是由多个 Unicode 转义序列组成的,每个转义序列以 &#x 开始,以 ; 结束。
HTML解码得到:
javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(15)
这段文本包含了多个十六进制转义序列
URL解码得到:javascript:\u0061\u006c\u0065\u0072\u0074(15)
JavaScript解码得到:javascript:alert(15)
浏览器会执行弹出弹窗