文件上传漏洞常见函数
文件上传漏洞常见函数:
1.deldot
deldot函数为upload-lab中一个出现多次的函数,是一个自定义的函数,在common.php中有所定义:
1 | function deldot($s){ |
读其源码可知,这个函数是将后边括号中的内容,从尾部开始,从后向前删除点.
,直到该字符串的末尾字符不是.
为止。
2.in_array
1 | in_array(mixed $needle, array $haystack, bool $strict = false): bool |
括号里的第一个参数$needle为待搜索值,$haystack为被搜索的数组,第三个参数决定是否进行类型比较。在文件上传中通常用来将文件后缀在黑名单或白名单里查找,从而进行对不同文件的处理。
3.str_ireplace
1 | str_ireplace($deny_ext,"", $file_name); |
该函数把括号内参数$deny_ext的值在$file_name中查找并替换成 (空格)。一般用于筛查黑名单(可用双写绕过)或者去掉后缀多余字符串。
4.strtolower
一个很简单的把括号中内容全部转换成小写的函数,通常用来把后缀名全转化为小写,然后再在黑名单或白名单进行筛查,使黑白名单的死角更小,如果不存在该函数,可以查看一下黑名单,尝试一下大小写绕过。
5.trim
去除字符串$str
的首尾的空白字符。一般用来去除上传文件后缀的空格,来以防绕过。
6.strrchr
1 | strrchr(string $haystack, mixed $needle) |
strrchr
函数在字符串$haystack
中查找$needle
,并将最后一次查找到的$needle
及其后面的字符串返回。如果没有在该字符串中查找到$needle
,则返回false
。一般会用来获取文件的后缀名。
7.substr和strrpos
1 | $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1); |
这两个函数放在一起是因为很多文件上传通过他们俩的组合,比如上边这一串代码,来获取上传了的文件的后缀名。
8.intval
将变量变成整数值,在文件上传中通常用这个函数把文件头转化成整数,来识别该文件(这时候通常就要用到文件马之类的了)。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 OP!
评论