[CSAWQual 2016]i_got_id

[CSAWQual 2016]i_got_id

知识点

知识点很全的wp
两个半小时学会perl

解题步骤

题目有3个链接。


还以为是模板注入,但确实能注。奈何确实走不通。
然后另外一个是文件上传。
网上有源码:

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

读取文件
Perl 使用一种叫做文件句柄类型的变量来操作文件 , 从文件读取或者写入数据都需要使用到文件句柄 .
文件句柄( file handle )是一个I/O连接的名称 , Perl 中提供了三种文件句柄 : STDIN , STDOUT , STDERR , 分别代表标准输入 , 标准输出 , 标准错误输出
这里就要使用到 Perl 中的尖括号运算符( <> )了 , 它有如下的用途
如果尖括号中间是文件句柄 , 尖括号运算符允许读取文件句柄
如果尖括号中间是搜索模式 , 尖括号运算符能返回与该模式相匹配的的文件列表 ,这被称为一个 glob , 比如 <*.bat>
如果尖括号内没有任何内容 , 那么它可以读取命令行上所有的文件内容 , 如果没有文件名 , 则可以读取标准输出
这里需要使用 读取文件句柄 这个功能
输出文件内容
前面读取到了文件句柄 , 那么如何输出文件的内容呢 ?
这里要用到 Perl 中的特殊变量 $
$
是默认参数的意思,指的是在不指定的情况下,程序处理的上一个变量 .
比如打开一个文本文件 , 读取每一行 ,在没有指定参数的情况下 , $ 指向从文件中读取的每一行 .
因此 , 若想要读取某个文件的内容 , 可以写一个循环 , 逐行读取文件的内容
while ( <$file> ) { print "$
"; }

首先要了解 Perl 中的 ARGV 全局特殊文件句柄
菜鸟教程上给出的解释是这样的


这个 @ARGV 是个全局 数组特殊变量 , 教程里是这样解释的

Perl 会将 perl 命令行参数列表放入到数组 @ARGV 中 , 而默认情况下 , 这些命令行参数是 Perl 的数据输入源 , 也就是 Perl 会以依次将他们当作文件进行读取
param()函数会返回一个列表的文件 , 但是根据后端代码 , 只有第一个文件会被放入到 变量中
这里就存在可利用的点!

所以先随便上传一个文件,抓包


然后修改内容,再用get传参,可以读取到文件

然后直接读flag

不懂为啥,复现不了wp里面的代码执行。还是太菜了。。。。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇