当前位置:网站首页>uploads-labs靶场(附源码分析)(更新中)
uploads-labs靶场(附源码分析)(更新中)
2022-07-03 15:53:00 【MUNG东隅】
pass-01
存在前端验证
onsubmit:当提交表单时执行一段 JavaScript。它只认true或者false.如果不返回值,则默认为true
写一个图片马,后缀是图片后缀,然后bp抓包改就行了
蚁剑连接
源码分析
前端:
checkile()函数
function checkFile() {
var file = document.getElementsByName('upload_file')[0].value;
if (file == null || file == "") {
alert("请选择要上传的文件!");
return false;
}
//定义允许上传的文件类型
var allow_ext = ".jpg|.png|.gif";
//提取上传文件的类型
var ext_name = file.substring(file.lastIndexOf("."));
//判断上传文件类型是否允许上传
if (allow_ext.indexOf(ext_name + "|") == -1) {
var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
alert(errMsg);
return false;
}
}
首先通过getElementsByName获得表单元素,它获得的也是类数组,如果想准确得到某一个元素,可以使用数组下标的方式获取,那么这里document.getElementsByName('upload_file')[0].value;就获得了文件名。
后面if语句判断上传文件是否为空
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
实例:
var str="Hello world!";
document.write(str.substring(3)+"<br>");
document.write(str.substring(3,7));
---------------------------------------------------------------------
lo world!
lo w
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 lastIndexOf() 方法获取后缀名 返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1。从该字符串的后面向前查找,从 fromIndex 处开始。 字符串中的字符被从左向右索引。首字符的索引(index)是 0,最后一个字符的索引是 stringName.length - 1。 例子:
String name = "upload.doc";
// 获取后缀名
String sname = name.substring(name.lastIndexOf("."));
//获得upload部分
String fileName=name.substring(0,name.lastIndexOf("."));
if (allow_ext.indexOf(ext_name + "|") == -1) ,在允许上传的后缀名里查找刚刚提取出的后缀名,如果找不到indexOf()函数会返回-1,这样就判断出了
边栏推荐
- Visual upper system design and development (Halcon WinForm) -6 Nodes and grids
- Function introduction of JMeter thread group
- Win32 create window and button (lightweight)
- Vs2017 is driven by IP debugging (dual machine debugging)
- 几种常见IO模型的原理
- Large CSV split and merge
- Seckill system 2 redis solves the problem of distributed session
- Wechat payment -jsapi: code implementation (payment asynchronous callback, Chinese parameter solution)
- The difference between mutually exclusive objects and critical areas
- MongoDB 的安装和基本操作
猜你喜欢
Wechat payment -jsapi: code implementation (payment asynchronous callback, Chinese parameter solution)
Microservice API gateway
Brush questions -- sword finger offer
Creation and destruction of function stack frames
Microservice - declarative interface call openfeign
App移动端测试【3】ADB命令
Popular understanding of ovo and ovr
Three dimensional reconstruction of deep learning
[系统安全] 四十三.Powershell恶意代码检测系列 (5)抽象语法树自动提取万字详解
深度学习之三维重建
随机推荐
Detailed explanation of four modes of distributed transaction (Seata)
UnityShader——MaterialCapture材质捕捉效果 (翡翠斧头)
Driver and application communication
Jmeter线程组功能介绍
Large CSV split and merge
Digital image processing -- popular Canny edge detection
Popular understanding of linear regression (II)
How idea starts run dashboard
Unity function - unity offline document download and use
Jvm-04-runtime data area heap, method area
“用Android复刻Apple产品UI”(2)——丝滑的AppStore卡片转场动画
Persisting in output requires continuous learning
找映射关系
Seckill system 3- product list and product details
求字符串函数和长度不受限制的字符串函数的详解
Halcon and WinForm study section 2
《微服务设计》读书笔记(上)
Redis高可用与持久化
Subclass hides the function with the same name of the parent class
[combinatorics] combinatorial identities (recursive combinatorial identities | sum of variable terms | simple combinatorial identities and | sum of variable terms | staggered sums of combinatorial ide