一、XSS
1.反射型xss
输入kobe点submit发现url为http://127.0.0.1/pikachu/vul/xss/xss_reflected_get.php?message=kobe&submit=submit,于是确定get传参的反射性
测试将kobe改为js ,成功弹窗
2.反射型xss(post)
输入任意字符
页面源码现实输入的字符被完整保留
构造payload
在输入之前先修改长度限制将20改为50
再将构造的payload 输入到pikachu上,提交。
发现payload成功执行
3.存储型xss
输入两个单引号
查看源码发现输入的单引号没有经过任何转义或处理
输入Payload进行测试,成功执行
关闭这一界面,再次打开时发现直接弹窗了,说明存储型xss虽然原理与反射型xss相似但危害更加持久,因为存储记录会一直保留。
4.DOM型xss
DOM可以理解为访问HTML的标准接口,DOM里面会把我们的HTML分成一个DOM树,如下图:
我们可以以这棵树为入口,通过DOM的某些方法对树进行操作,比如对标签的添加、改变和删除等等
DOM这个东西相当于在前端提供了一个通过JS去对HTML进行操作的接口
输入和输出并不一样
查看源码:
这里有段JS代码,它通过 getElementById 获取到了标签 Id 为 text的内容赋值给str,然后又把 str 的内容通过字符串拼接的方式写到了 a 标签的 href 属性中,a标签会写到 Id 为 dom的 div 标签中
构造的Payload如下
#' onclick=alert("xss")>,输入:
成功执行
5.DOM型xss-x
输入一些内容后的显示
观察源码:
这里也有个JS代码,它定义了一个domxss函数。它利用 window.location.search 获取浏览器中URL的内容,然后赋值给 str
然后经过URL解码和字符串分隔,取出URL中的参数内容,再把 “+” 替换为 “ ”(空格),赋值给 xss
最后把 xss 拼接到 a 标签中,然后写到 Id 为 dom 的 div 标签中
跟前面的DOM不同的是,它的输入是从浏览器的URL中获取的,很像反射型XSS(get)
构造的Payload跟刚才是一样的 #' onclick=alert("xss")>
成功执行
6.xss之盲打
XSS盲打不是攻击类型,而是一个攻击场景
在皮卡丘平台上,我们随便输入一些东西
提交后我们输入的内容不会在前对输出,而是提交到了后台,可能管理员会去看。如果我们输入一个JS代码,管理员登录后台管理界面,如果后台把我们的内容输出,那后台管理员可能遭受到我们的XSS攻击,我们提交以下内容,并登录后台管理界面(账号密码为admin,123456)一登录进来就遭受了XSS攻击
7.xss之过滤
实际中的系统,或多或少都会做一些安全措施,但是这些安全措施也能方法、逻辑不严谨,可以被绕过。
转换的思路
- 前端限制绕过,直接抓包重放,或者修改html前端代码。比如反射型XSS(get)中限制输入20个字符。
- 大小写,比如。后台可能用正则表达式匹配,如果正则里面只匹配小写,那就可能被绕过。
- 双写(拼凑),
pt>alert(111) pt>。后台可能把闭合掉页面中的成功弹窗
二、CSRF
1.CSRF(get)
submit类型为get
点submit,截包,修改参数
发现pikachu上的信息被修改
2.CSRF(post)
同样查看审查元素,发现post
这次需要构造一个服务器文件的链接,功能为一被访问就自动post数据到修改个人资料的PHP文件上。
构造html代码如下
点击html的url http://127.0.0.1:88/pikachu/vul/csrf/csrfpost/post.html
访问该url,跳转回了pikachu页面
3.CSRF(token)
点击submit后截包,发现多了一个token值,且token值每次都随机变化。
因此难以绕过token
查看后台发现token是以明码方式标识出来的
因此可以写一个token捕捉工具捉到token值,再通过反复暴力破解的方式,成功破解出来。