[CSAWQual2016]i_got_id

开局三个超链接:

3

helloworld提示perl:

Forms登陆页面,没有有用的信息,正常显示,无二次注入点,SQL注入,ssti都没有

就是files上传文件了,可以发现要上传perl文件:

直接猜测后端代码:

1
2
3
4
5
6
7
8
9
use strict;
use warnings;
use CGI;

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

解释:

my $file= $cgi->param( ‘file’ );:
param()函数返回一个列表的文件。但是只有第一个文件会被放入file变量中。

while ( <$file> )中,<>不能处理字符串,除非是ARGV,因此循环遍历并将每个值使用open()
调用。

对于读文件,如果传入一个ARGV的文件,那么Perl会将传入的参数作为文件名读出来。
所以,在上传的正常文件前加上一个文件上传项ARGV,然后在URL中传入文件路径参数,就可以读取任意文件。

抓包:将里面的东西删除,复制15,16行空一行粘贴

第一个——-删除Content-Type,加的那个加上这个,在添加的地方前面加上ARGV

1

2

在url加上?cat+/etc/passwd(cat+/flag)(空格用+替代):

4

然后就出了:

5

参考链接:[CSAW 2016 I Got Id – Web200]i_got_id](https://tsublogs.wordpress.com/2016/09/18/606/)