今天遇见一个存xlsx文件的站,上传的时候只校验后缀,提交到文件列表里的xlsx文件会被解析,解析成功才能从其他接口用id的形式访问,解析失败则不能访问。
添加到文件列表里的时候,没有对文件名进行校验,可以修改为任意后缀。
众所周知Windows下能执行代码的最宽松的文件格式就是bat了,所以尝试在xlsx文件能被正常解析的情况下插入bat格式的命令。
直接在文件头里插入不行,解析会出错。大部分情况下wps能正常打开,但是上传后解析失败。
直接在文件末尾插入也不行,因为bat执行遇到\x00
字节的时候会停止
所以要用注释把xlsx文件中的\x00
注释掉
bat里注释有很多种(虽然很多都不是标准的注释)
https://cloud.tencent.com/developer/article/2097119
这里用::
,因为504b0304
后正好有两个\x00
字节太多了,有很多都是不可见字符,不知道会对bat运行有什么影响,所以我也不确定到底是怎么执行的。反正是执行了
把这个xlsx上传后,提交的时候修改后缀为bat。查看的时候点击下载,这时候下载下来的就是bat:
点“打开文件”就弹计算器了