# [CSAWQual2016]i_got_id

开局三个超链接:

3

helloworld 提示 perl:

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

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

直接猜测后端代码:

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/)

Edited on

Give me a cup of [coffee]~( ̄▽ ̄)~*

odiws WeChat Pay

WeChat Pay

odiws Alipay

Alipay

odiws PayPal

PayPal