0%

pl文件上传

2025-07-28 04:26By
zhizuijingmi
PerlCGI

Problem: [CSAWQual 2016]I_Got_ID

思路

  • 解题大致思路
    抓包发现都是.pl文件,然后两个文件上传文件分别上传发现内容全部打印出来了(php代码没有)
image-20250728103837680 image-20250728103946954

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

将上传的文件类型及文件内容处复制再粘贴一行,将filename去掉,然后内容填入ARGV,然后盲猜flag文件,读取试试

image-20250728110327100

当然有更加规范的方法

ls%20-l%20.%20|(即执行ls -l . |命令)查看当前文件(通过管道的方式,执行任意命令,然后将其输出结果用管道传输到读入流中

image-20250728112705434

./file.pl(查看源码)

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

ls%20-l%20/%20|(即ls -l / |)(读根目录)

image-20250728113033047

最后cat%20/flag%20|读flag就行。(反正就是要主要空格要编码,命令后要管道符

EXP

  • 具体攻击代码

总结

  • 对该题的考点总结
还没有人赞赏,快来当第一个赞赏的人吧!
  
© 著作权归作者所有

加载中...

加载失败
广告
×
评论区
添加新评论