用户
搜索

该用户从未签到

i春秋官方

Rank: 7Rank: 7Rank: 7

4

主题

4

帖子

120

魔法币
收听
0
粉丝
0
注册时间
2018-6-3
发表于 2018-12-27 15:32:15 527186

QQ图片20181225161325.jpg 大家好,热乎的2018·春秋圣诞欢乐赛官方WriteUp出炉了,快来瞧一瞧,看一看啊~~~


QQ图片20181225143349.jpg

gift

描述里其实已经透露了不少信息:

大黑想了想,一拍脑袋,说:“这简单啊,直接把礼物放在网站页面上不就好了,这样所有小朋友就都能收到自己的礼物了o( ̄▽ ̄)ブ”。说做就做,大黑一(fu)顿(zhi)操(zhan)作(tie),键(ctrl)盘(c)飞(ctrl)起(v),说时迟那时快,一个礼物便出现在了页面上。圣诞老人觉得很奇怪,这么快就做好了?但是还是很满意效果的,于是便送了个钥匙给大黑。。。(你还想听后续?没了没了~//我才不会对你透露钥匙上刻了题目名呢)

访问链接,是一个h5界面,而描述里说页面里就有礼物,查看头部信息、js、css都没什么发现,然后查看html源码,全选的话会发现一些一些行里有一些空白字符,初步猜想是不是隐写术。在记忆中,web中的隐写术有一种出名的隐写,名为snow。Snow的man手册中讲到“通过在文本文件末尾追加由制表位隔开的空格可以实现数据隐藏,最多可以添加7个空格,这使得每8列可以嵌入3位”。实际上,用HTML浏览器查看文件,也看不出明显的被嵌入数据的痕迹。只有通过文件对比才能发现数据嵌入痕迹,整个文件中会有很多制表位和空格。
打开http://fog.misty.com/perry/ccs/snow/snow/snow.html,在Decryption处把url写上,密码写上题目名gift,点击Decrypt即可得到flag

gift php

圣诞老人简单的学了点php代码,所以代码里难免会出现小漏洞。
由于是欢乐赛,源码直接访问.index.php.swp,通过vi -r还原即可得到。

<?php
function areyouok($greeting){
    return preg_match('/Merry.*Christmas/is',$greeting);
}

$greeting=@$_POST['greeting'];
if(!areyouok($greeting)){
    if(strpos($greeting,'Merry Christmas')!==false){
        echo 'Merry Christmas. '.'flag{259efcb4-bb57-4967-8aa8-8271f04f655a}';
    }else{
        echo 'Do you know .swp file?';
    }
}else{
    echo 'Do you know PHP?';
}
?>

这里乍看是难以达成正则不允许出现,而字符串查找又得出现这2个条件,而跳出去去看,发现preg_match和strpos在接收的参数为数组的情况下会返回NULL,而NULL!==false这个是成立的,所以我们就可以轻易过了这个签到题了。是不是很开心欢乐~

gift php plus

这题是在gift php的基础上加上了is_array的判断,不允许使用数组来绕过。不过即使这样,也阻挡不了聪明的你们。
这里解题的关键在于回溯的次数有上限,当达到上限时候,preg_match会返回false。
可参考phithon的《PHP利用PCRE回溯次数限制绕过某些安全限制》https://www.leavesongs.com/PENETRATION/use-pcre-backtrack-limit-to-bypass-restrict.html ,还可以参考《正则表达式的隐藏陷阱,你都了解么?》https://mp.weixin.qq.com/s/szL__mT80mOKeoaTpA7gKQ

gift collect

这题用的flash动画是从网上找的小游戏,当时misc第一关是想考察大家对于别的文件格式分析熟不熟悉,也找了很多游戏,但是都不是很满意,只有这个我觉得挺满意的,游戏难度不高,但是很好玩啊~~

解题步骤:

  1. 使用 flash decompiler(很好用的flash反编译软件) 打开 swf 文件
  2. 找到最后一个子图形的第一帧,便可以看到flag了

1.png

PS: 其实最后面的 X 本来真的是 × 的,原始flag 是 flag{Merry_Christmas_d} ,Christmas后面是有个 } ,然后被画了个大叉,表示花括号是假的。。。可是最后这种方法被否决了,不然我觉得能坑到一些人 ^_^


gift sellect

本来想着的是让大家熟悉正则匹配的用法,但是制作好之后发现如果文件特别大,会不会更好玩一些。于是就制作了10w个文件,但是发现10w的数量还是不太够,很快就能跑完,最后文件数量变成了100w个,所以这题也考察了选手对大文件处理效率的能力~

解题步骤:

  1. 使用tar -zxf 命令解压第一层压缩文件,我是在我的腾讯云最低配的服务器上跑的,也只用了1分钟左右便解压完毕了,然后尝试在本机win10上跑,用的2345好压,时间预计为15分钟。

misc2-1.png

  1. 由于gz压缩包中的文件名全是gift,所以解压覆盖原文件造成一定的解题麻烦= =,很抱歉我就是故意的,但是可以使用gzip -d sock_00* 这样的方法依次二级解压,这样做的好处是能绕过gz中的文件,直接以gz压缩包的名字命名内部的内容。(当然我觉得应该还有更好的方法,这种还是太慢了)

misc2-2.png

  1. 然后再编写python脚本提取所有文件内容放到一个文件里,以方便我们进一步筛选。

misc2-3.png

  1. 我们大致观察所有的flag,发现有一种格式flag{xxxx_xx_xxxx_xxxx_xxxx_x}出现的次数很多,所以我们用正则获取所有类似的flag:flag{\w[a-z0-9]{3}_\w{2}_\w[a-z0-9]{3}_\w[a-z0-9]{3}_\w[a-z0-9]{3}_\w},找到214个匹配项,最后再通过一些筛选,或者自己肉眼看看~,就能找到flag了。这里推荐一个方法,去掉 flag{ ,替换 _ 为空格,去掉 },然后丢谷歌翻译里去。

misc2-4.png

PS: flag文件所在的那个sock编号也有很特殊的意义哦,不过是相对于我个人而言,本来还想着二层压缩文件使用多种压缩格式,比如 gzip、zip、tar、tar.gz、7z、rar 等等。但是发现这么做是不是有点太丧(guo)心(yu)病(tou)狂(lan),所以就没有做了


gift gift

这题当时想着是做一个隐写的,考虑到图片隐写就太普通了,没啥意思,于是想着能不能结合着圣诞相关的歌曲来做,于是就找到了从网上找到了这个Jingle Bells.mp3,然后发现常规的mp3隐写工具不是很好用,转换wav格式之后的wav隐写工具也不能正确试别,所以就尝试着自己分析了下MP3格式,正好发现了MP3的数据帧有一处保留字,于是就自行编写代码把flag放入MP3文件里了。

解题步骤:

  1. 解压缩文件,发现MP3听起来没有任何缺陷,应该不是直接塞进频谱图中的隐藏方式,根据提示发现private位置有被占位的现象,所以编写脚本获取所有的private位置,进而得到flag。
#coding:utf-8
a=open('Jingle Bells.mp3','rb').read()
a=[ord(i) for i in a]

# 第一个数据帧位于0x1199d,此处start_num 是略小于第一帧位置即可
start_num=0x115d0
i=0
tmp1='0b'

while i<len(a):
    # 模糊匹配,每一数据帧长度有时候并不一样,0x1A1 or 0x1A2
    if (i>=start_num and i+2<len(a)) and (a[i]==0xff and a[i+1]==0xfb and a[i+2]/16==9) :
        tmp1+=str(a[i+2]%2)
        i+=4
        start_num+=0x190
    else:
        i+=1

# 后面的都是\x00 了
print tmp1[:-8*367]
print hex(int(tmp1[:-8*367],2))[2:-1].decode('hex')

PS: 对于MP3格式的分析,有一篇文章详细的介绍了“MP3文件结构解析”。另外很多人从图片,备注,描述里面找东西,这些我都是随便写的= =,说明一下,如果有发现这段文字“do you know loli?haha”(这个loli是第一届巅峰极客的线上赛misc赛题T_T)。会发现这段文字下面也有很多0xff字样,具体内容是什么就不说了,请自行发现~
另外这题由于出题者的失误,没有注意到题目中存在的几处错误的farme位置,也是脚本编写的错误。造成了一些选手解题时发生了很多困惑,在此深表道歉=_ =




发表于 2018-12-27 23:42:03
学习学习。。。。
http://www.anonymou5.com
使用道具 举报 回复
发表于 2019-1-1 11:22:54

哇  代码审计  我喜欢  希望版主多多分享  
使用道具 举报 回复
都没注意到,mark一下
使用道具 举报 回复
发表于 2019-1-8 17:52:14
题目还下载得到吗
使用道具 举报 回复
发表于 2019-1-12 18:03:51
原题还有么?链接找不到了,我想对着原题再做一遍!
使用道具 举报 回复
发新帖
您需要登录后才可以回帖 登录 | 立即注册