• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

xctf-i-got-id-200(perl网页文件+ARGV上传造成任意文件读取)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

打开url发现有三个链接,点进去都是.pl文件,且只有files可以上传文件。

.pl文件都是用perl编写的网页文件

 

 这里上传了又将文件的内容全部打印出来,那么猜想后台应该用了param()函数。

param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的接收变量中。如果我们传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。对正常的上传文件进行修改,可以达到读取任意文件的目的:

这里附上网上大佬们猜测的后台代码:

use strict;
use warnings; 
use CGI;
my $cgi= CGI->new;
if ( $cgi->upload( 'file' ) ) { 
    my $file= $cgi->param( 'file' );
     while ( <$file> ) { print "$_"; }
} 

bp进行抓包,将上传的文件类型及文件内容处复制再粘贴一行,将filename去掉,然后内容填入ARGV

然后盲猜flag文件,读取试试

 

 或者直接先读取file.pl文件,盲猜在/var/www/cgi-bin/file.pl或者/var/www/cgi-bin/file.pl两个拿去试

 

 发现确实使用了param()函数,然后我们利用bash来进行读取当前目录下的文件

payload为:

/cgi-bin/file.pl?/bin/bash%20-c%20ls${IFS}/| 

%20为空格,可换成+号

 

 列出了当前目录下的内容,发现flag,直接读取

 

总结:perl文件遇到上传可配合ARGV文件使用造成任意文件读取,然后任意文件读取可利用bash执行一定的命令。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
在notepad++中编写perl程序并直接运行发布时间:2022-07-22
下一篇:
perl 二维数组发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap