在文件downloadfile.cgi中,存在任意文件下载
首先接收POST过来的数据包,调用setdownloadfile函数,跟进函数

1
2
3
4
if [ "$REQUEST_METHOD" == "POST" ];then
setdownloadfile
fi
getdownloadfile

在setdownloadfile函数中,对提交过来的数据进行url解码并进行处理,读取downpath参数里面的文件路径,最后调用tar命令进行文件打包,打包好的download.tar 文件存放在根目录下,可直接下载。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
setdownloadfile()
{
LINE=`./getpostdata.cgi $CONTENT_LENGTH`
[ "x$LINE" == "x" ] && READERR=1
[ "x$LINE" != "x" ] && LINE=`./urldecode.cgi $LINE`

paramIndex="1"
CGIParam=`echo "$LINE&" | cut -d '&' -f $paramIndex`
while [ "$CGIParam" != "" ]
do
par=`echo "$CGIParam" | cut -d '=' -f 1`
val=`echo "$CGIParam" | cut -d '=' -f 2`
if [ "$val" != "" ]; then
case $par
in
"downpath")
DOWNPATH=$val
;;
esac
fi
paramIndex=$((paramIndex+1))
CGIParam=`echo "$LINE&" | cut -d '&' -f $paramIndex`
is_submit="1"
done

if [ "$is_submit" == "1" ]; then
tar -cvf /var/WEB-GUI/download.tar $DOWNPATH >/dev/null 2>&1
fi
}

构造下载连接,打包成功后,直接下载
fh-6-1.png
fh-6-2.png