当前位置:网站首页>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,这样就判断出了
边栏推荐
- Pandora IOT development board learning (HAL Library) - Experiment 5 external interrupt experiment (learning notes)
- Win32 create window and button (lightweight)
- nifi从入门到实战(保姆级教程)——flow
- Shell script import and export data
- 驱动与应用程序通信
- Approval process design
- The markdown file obtains the pictures of the network and stores them locally and modifies the URL
- Brush questions -- sword finger offer
- 关于网页中的文本选择以及统计选中文本长度
- Seckill system 3- product list and product details
猜你喜欢

Srs4.0+obs studio+vlc3 (environment construction and basic use demonstration)

WinDbg analysis dump file

如何使用 @NotNull等注解校验 并全局异常处理

How are integer and floating-point types stored in memory

C language brush questions ~leetcode and simple questions of niuke.com

Microservice - fuse hystrix

Summary of concurrent full knowledge points

Concurrency-02-visibility, atomicity, orderliness, volatile, CAS, atomic class, unsafe

“用Android复刻Apple产品UI”(2)——丝滑的AppStore卡片转场动画

Please be prepared to lose your job at any time within 3 years?
随机推荐
Digital image processing -- popular understanding of corrosion and expansion
"Remake Apple product UI with Android" (2) -- silky Appstore card transition animation
六月 致 -.-- -..- -
Tensorflow realizes verification code recognition (I)
The difference between mutually exclusive objects and critical areas
Tensorflow realizes verification code recognition (II)
Redis在Windows以及Linux系统下的安装
Visual upper system design and development (Halcon WinForm) -5 camera
Under VC, Unicode and ANSI are converted to each other, cstringw and std:: string are converted to each other
Go语言自学系列 | golang中的if else语句
Backtracking method to solve batch job scheduling problem
Jvm-03-runtime data area PC, stack, local method stack
[combinatorics] combinatorial identities (recursive combinatorial identities | sum of variable terms | simple combinatorial identities and | sum of variable terms | staggered sums of combinatorial ide
Creation and destruction of function stack frames
Create gradle project
利用MySQL中的乐观锁和悲观锁实现分布式锁
从 flask 服务端代码自动生成客户端代码 -- flask-native-stubs 库介绍
About text selection in web pages and counting the length of selected text
Find mapping relationship
VC下Unicode和ANSI互转,CStringW和std::string互转