反射型xss(get)
在输入框里输入kobe,返回一段文字和图片
直接输入xss的payload,发现没法继续输入,可能前端存在长度限制
我们有两种方法,绕过限制
方法一:直接修改前端代码
将原来的maxlength=20修改为100
成功弹窗了
方法二:修改url
先输入一段payload
由于这是get请求,所以,payload会直接存在url地址栏里
所以直接构造url
http://IP地址/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert(%27xss%27)%3C/script%3E&submit=submit#
成功弹窗
反射型xss(post)
登录框输入admin/123456
直接输入payload
成功弹窗
get和post请求方法之间的区别
HTTP(超文本传输协议)是一种用于传输网页的协议,它定义了客户端与服务器之间请求和响应的格式。在HTTP中,有两种常见的请求方法:GET和POST。它们的主要区别如下:
-
数据传输方式:
- GET:通过URL传递数据,数据附加在URL之后,以
?
分隔,参数之间以&
连接。例如:http://example.com/page?name=value&name2=value2
。 - POST:通过请求体(request body)传递数据,数据不会显示在URL中。
- GET:通过URL传递数据,数据附加在URL之后,以
-
数据大小限制:
- GET:由于数据附加在URL上,因此受到URL长度限制,不同浏览器和服务器对URL长度有不同的限制。
- POST:理论上没有数据大小限制,因为它通过请求体传输数据。
-
安全性:
- GET:由于数据在URL中可见,因此不安全,不适合传输敏感信息。
- POST:数据在请求体中,对用户不可见,相对更安全。
-
幂等性:
- GET:幂等的,意味着多次执行相同的GET请求,结果相同,不会改变服务器状态。
- POST:非幂等的,可以改变服务器状态,比如提交表单。
-
缓存:
- GET:可以被缓存,浏览器和服务器可以缓存GET请求的结果。
- POST:默认不被缓存,因为POST通常用于修改服务器状态。
-
历史记录:
- GET:在浏览器的历史记录中会留下记录。
- POST:在浏览器的历史记录中不会留下记录。
-
书签:
- GET:可以被书签,因为URL包含了所有信息。
- POST:不能被书签,因为数据不在URL中。
-
重播:
- GET:可以通过点击浏览器的后退按钮重播。
- POST:通常不能通过后退按钮重播,因为POST请求改变了服务器状态。
总的来说,GET方法适合请求数据,而POST方法适合提交数据。在实际应用中,应根据需要选择合适的方法。
存储型xss
输入payload
弹窗了
![
发现输入了越多次的payload,留言会增加,弹窗的次数也会增加
说明我们的数据被存储起来了,这就是存储型的xss
DOM型xss
什么是DOM呢?
网页的DOM(Document Object Model)是一个编程接口,它将网页转换为一个可操作的树状结构,使得开发者可以通过脚本来访问和修改网页的内容、结构和样式。
输入payload
打开F12,我们发现没有实现攻击效果的原因,字符串
找到网页js代码
根据这个闭合的条件,构造payload
<a href=' "+str+"'>
srt = ' οnclick="alert('xss')">
<a href=' " ' onclick="alert('xss')">' " '
弹窗了
DOM型xss-x
payload和上一关一样
’ οnclick=“alert(‘xss’)”>
xss之盲打
对着留言框输入payload,然后提交
!
提示我们需要登录后台
http://IP地址/pikachu/vul/xss/xssblind/admin_login.php
在这里插入图片描述
输入账号密码admin/123456
实现攻击效果
xss之过滤
随便输入个123,看看前端效果
既然存在字符的过滤,那么我们可以换一个payload
<a href="" onclick="alert('xss')">
xss之htmlspecialchars
针对于这个双引号闭合,构造新的payload
' οnclick='alert("xss")
xss之href输出
查看页面源代码,这里给进行了html编码
利用JavaScript 代码段
javascript:alert(1)
xss之js输出
<scirpt>alert('xss')</script>
输入payload没有反应
查看页面源代码
这里前面有一个< scirpt >标签了,导致对应关系出问题了,我们要想办法闭合掉第一个标签
</script><script>alert('xss')</script>
成功弹窗