用户
搜索

[web安全] CTF骚思路

  • TA的每日心情
    开心
    2020-11-19 16:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    i春秋-呆萌菜鸟

    Rank: 1

    2

    主题

    3

    帖子

    48

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2020-8-4
    发表于 2020-11-12 16:25:59 510936
    本帖最后由 无始道长 于 2020-11-12 22:07 编辑

    By---无始道长

    前言

    Bzi76A.png
    最近,在V2EX上,一名用户发表了一个自己制作的网站,吸引了大量网友的注意。其实,我也是其中的一个,马上,该网站迅速在解密/探险以及爱好计算机的网友群和空间、朋友圈传播开来。涌现了许许多多向终点奋发冲刺的杰出人物,我第一眼看这个网站,也是有些一脸不屑,但是当我深入其中的时候,却觉得另有深度、深入其中。
    随着这个网站关卡的深入,可以发现,作者运用的技术和底蕴也越来越强,不仅仅只有技术,还要懂得各种各样的学科知识和梗,才能走到最后闯关成功,可谓是难上加难!再者,吐槽一下,作者有时候的脑洞,是真的大呀!
    所以,综上所述,这个网站到最后能通过的人,真的是百里挑一。
    等等,先别说我吹牛逼,看看网站的数据就知道了!
    该网站在挑战前会让用户输入自己的昵称,记录在后台数据库中,我们来看看数据:总共有一万多人参与,结果成功通过的人数只有一百人左右,不可谓“百里挑一”吗?!
    Bzijk8.png
    CTF小技巧The Riddle
    刚进去的时候,是这么一个简洁页面
    直接阐述了规则,有意思!
    BzFn1J.png
    简单的填写了自己的用户名后,就可以开始了接下来的挑战闯关了。
    其实我刚开始想法很简单,也很偷懒,想想所有的关卡页面都在cipher这个文件夹里面,不如直接用Python爬虫把目录下面所有文件全都爬出来,不就可以直接通关了?!
    可是作者也不是吃素的,我的Python爬虫没有起到丝毫作用,看来是作者在这个网站上加入了反爬措施。
    有意思,我喜欢。好,既然不想让我们走捷径,那我就一关一关闯过去吧!
    大家也可以自己试一下,真的不会了,再来看我的攻略,谢谢各位的捧场!
    下一步就直接开始闯关了!  

    第一关

    BzFN1H.png
    第一关是真没什么好说的...
    诸君看看这过关率...
    BzF4H0.png

    第二关

    BzFjD1.png

    法一

    BzkYV0.png

    法二

    简单的代码审计
    BzkhxH.png

    第三关

    BzV0xg.png
    让我们看看提示
    BzVhzF.png
    上面?是哪里呢?
    我们自然而然地想到了其网址本身
    BzVOJK.png
    第三:third
    那么第四自然就是fourth啦!
    给你给你
    BzZCdI.png

    第四关

    BzZAW8.png
    简单的代码审计
    BzZ0Fx.png
    于是我们顺利地来到了第五关   

    第五关

    BzZhkt.png
    什么意思呢?
    不如看看标题?
    BzZL0s.png
    Google is your friend
    Bzek7R.png
    BzeEA1.png
    于是我们来到了第六关
    知道你们想要什么  

    第六关

    Bze8AI.png
    百度识图不用我多说吧,你们都懂的。
    水上由岐
    Bzet9f.png
    此处起不再提供关卡网址

    第七关

    Bze2gU.png
    这就是第七关...是的,啥也没有...
    让我们康康源代码
    Bzefu4.png
    是的,有图
    BzeLvD.png
    莫慌!莫慌!
    现在要提到CTF中的一个低端小技巧——文件隐写
    不知道文件隐写是啥?GLYF...
    BzejDH.png

    第八关

    Bzmn5q.png
    再来看看提示  Bzm3MF.png
    Bzm6Zd.png
    那么思考思考,图片有了,那文字呢?
    我们很容易想到,下载图片,转成TXT格式,用记事本打开
    在一堆乱码的最下方,我们能看到...
    Bzm5QS.png

    第九关

    BznkJx.png
    什么错误呢
    代码审计...
    BzzVjP.png
    诸位发现了吗
    指向的value="0"
    意味着我们提交的答案将送往第0关
    正确代码value="9"  

    第10关

    答案匿于彩蛋里
    3vZHC8.png

    第10.5关(这该死的彩蛋)

    BzzmB8.png
    怎么办?
    BzzMNQ.png

    第11关

    Bzz19s.png
    是不是觉得有种莫名的熟悉感?
    不知道MD5是啥?GLYF...
    想要口算MD5?想当大黑阔? 洗洗睡吧
    懒得口算,在线解码
    BzztBT.png

    第十二关

    BzzD3R.png
    MD5乱码?
    很容易想到,将文本转为HTML格式打开
    效果如下
    Bzz6u6.png
    致敬ENIAC!  

    第十三关

    Bzzf4H.png
    提示:
    BzzIgI.png
    a?a对应b!
    BzzLVS.png
    我们将a换成b,此时图片仍能加载
    DSSSvq.png
    是不是觉得一模一样?其实不是的
    我们将两幅图来回切换,再进行抽帧
    DSSVPJ.png

    第十四关

    DSSGPH.png
    于是我们陷入了新一轮懵逼
    来看看提示
    DSSYRA.png
    DSSasP.png
    公司?
    于是我查了SNSW3IS
    此产品出自于西门子,是一种电阻
    电阻?欧姆定律?A了A了  

    第十五关

    DSSBdS.png
    还真就和图片杠上了!
    再看看提示
    DSSDIg.png
    于是我将其下载,用c32asm以及UltraEdit打开
    PNG的文件头是89 50 4E 47
    我们可以发现,此gif图用的是png的文件头
    不得不说作者丧心病狂
    于是我们将文件头换成正常gif的文件头,再进行抽帧
    DSS2Mq.png

    第十六关

    DSSWLV.png
    日常懵逼
    看看提示
    DSSqQ1.png
    三维?立体图?裸眼3D?逆向展开?
    好奇之下,我选择了裸眼3D
    3O1oeH.png
    咳咳咳...
    可能我是个瞎子...
    3O1Twd.png
    我摆个角度
    3O1qYt.png
    还看不清?
    3O1XSf.jpg
    或者是
    3xRpUe.png
    还看不清那就算了吧  

    第十七关

    3O3SmQ.png
    提示
    3O39Ts.png
    3O3Ff0.png
    世界上有十种人,哪十种人呢?
    3O3ElT.jpg
    一种是懂二进制的,一种是不懂二进制的
    get线索——二进制
    我们试着把该十六进制数列转化为十进制
    因为提示:七七四十九...说明还要开个方
    再将所得数转化为二进制,以七个为一组
    1100110
    1100110
    1100110
    0111100
    0111100
    0100100
    0000000
    把一提出来建个模...
    3O3lfx.jpg
    或许可以模糊识别试试百度识图
    3O33p6.jpg
    像不像!
    苦力怕creeper!
    天知道我经历了什么...
    3O381K.jpg  

    第十八关

    3vVlFK.png
    没有输入框,怎么办?  

    法一

    源代码中加入输入  

    <form action="check.php" method="POST">
    <input type="input" name="password" size=20 maxlength=20>
    <input type="hidden" name="stage" value="12">
    <input type="submit" value="输入"></form>

    法二

    前往之前的关卡将value改为相应关卡数
    详参第九关...

    第十九关

    3vZSpD.png
    已知高7 宽40,static char test bits指的是静态字符测试位,容易想到X BitMap
    将16进制转2进制的数据手动格式化后的图像中一的位置提取出来
    3veYVI.jpg
    然后通过xmb文件格式导出
    然后转MPEG图片就得到了
    但是图是反转的,怎么办呢
    8iYfv8.png
    怎么反转了?
    应该是bit存放大小端的问题,去改了一下代码,将二进制的数字倒转一下
    或者将其填充至8位然后倒转
    3vedG8.png
    3veDMQ.png  

    第二十关

    3veWGT.png
    简单的一个正则表达式
    3vehzF.png  

    第二十一关

    3vmCdI.png
    仔细看...PHP?不觉得奇怪吗?为什么不是HTML呢?
    以下为科普
    PHP是服务器,处理脚本,就是从服务器处理数据,转换成HTML展现给你,所以它可以发送动态数据,而非静态html数据
    所以我们自然而然地想到了抓包
    3vmvt0.png
    网址就在抓包里~  

    第二十二关

    3vnt9f.png
    是不是在想着复制粘贴?
    3vnrEn.gif
    当然不可能了
    那么怎么办呢?暴力?穷举?
    只要将初始化改一下就行啦!
    既然它输入框里初始没有密码,那我就给它补上!
    3vnT4x.png  

    第二十三关

    3vnqgO.png
    你觉得这是个送分题...
    3vnLvD.png
    提示来了
    cookie?仅仅是饼干?
    cookie=访问的站点存储在您计算机上的一段信息
    那么怎么加入管理员权限?
    因为是PHP,于是我们继续尝试抓包
    3vui28.png
    看到了吗?is admin
    既然在此处is admin的value值为0
    那我们就将其改为真值
    怎么改呢?在哪儿改呢?
    当然是console控制台中的creat live expression啦
    3vugII.jpg
    3vKSL4.png  

    第二十四关

    3vKmOe.png
    非常明显的一个进制转化关系
    左边看到最大为f很容易想到16进制
    右边出现o至少是25进制
    写个程序试试?
    很容易得出:当右边为30进制时等式成立  

    第二十五关

    3vKcXF.png
    容易想到aaencode(颜文字)解密处理
    3vMEAs.png
    3vMZhq.png
    再进行十六进制转字符串
    3v10DU.png
    进入浏览器控制台,去掉最后一行末尾的('_'),复制加密后的颜文字代码;
    在console控制台粘贴你第二步复制的颜文字代码,然后运行     

    第二十六关

    3vl4ts.png
    再看看提示
    3vlopq.png
    我当时直接就懵了
    3vlHXT.gif
    盲猜base64,得到23734381713242923281
    接着我又试了转换,16进制查看,反转,rot13,希尔密码,四方密码,同音密码,A1z26 密码,关键字密码,培根密码,滚动密钥密码,维吉尼亚密码,简单换位密码,栅栏密码,Porta 密码,波利比奥斯方阵密码,普莱菲尔密码,列移位密码,凯撒密码,双密码,博福特密码,埃特巴什码,自动密钥密码,仿射密码,ADFGVX 密码,ADFGX 密码
    结果均与9键字母盘无较大关系
    于是我将base64所得两两拆分,得到23 73 43 81 71 32 42 92 32 81
    很容易发现前一位数字范围是1~9,后一位数字范围是1~3
    结合9键能发现,前一位数字是键数,后一位数字是字母序数
    由此可得CRITPEHXET
    但是这显然不是一个单词,根据我的英语功底,TEXT应该放在一起
    经过百度可得
    3vMm90.png
    真是太不容易了QAQ!

    第二十七关

    3vQoLD.png
    经过下载可得
    3vQ7ee.png
    这时候就要考验我看...咳咳咳
    技术处理百度识图可得
    3vQOJI.jpg
    但是确定没用,怎么办?详参十八关  

    第二十八关

    3vlSOS.png
    于是我们百度可得
    3vlPoj.png
    进一步搜索
    3vlVS0.jpg
    gotit走你!
    日常输入框问题,将size以及maxlength调为5再进行输入,或详参十八关  

    第二十九关

    3v1vqS.png
    感谢DWIG小可爱的友情参与~
    送分题
    镜像翻转  

    第三十关

    3v3nIJ.png
    没啥好说的,复制粘贴谷歌一丢~
    北约音标字母(英语: NATO phonetic alphabet )
    中间只少一个YOU-NEE-FORM
    3v30zt.png  

    第三十一关

    3v3rsf.png
    将NTVIEO ELESWW XELNTN摆成三行
    3v3sL8.png  

    第三十二关

    3v3cdg.png
    404 Not Found?果真如此?不如试试百度翻译?
    不过这个找不到对象倒是挺真实的...
    3v36eS.png
    一片空白,看看提示
    3v3WJs.png
    Are you kidding me???
    再来看看另一条提示
    3v3fWn.png
    识图,全知之眼,怪诞小镇,与之结合的解密是猪圏密码
    再将之前的超长base64编码转化为图片,逆向工程
    将base64转换成图片 只需要在img 标签中引入即可,注意要加上标明前缀(data:image/png;base64),否则并不知道,这串代码是干啥的
    将图片转换成base64 通过canvas.toDataURL将图片转换成base64,需要注意的是,在转换成 dataURL 前必须先确保图片成功加载到,于是.toDataURL()方法应该写在的onload异步事件中
    当img的地址存在跨域时,而且服务器不允许跨域,这样是转换不了的,当服务器允许跨域时,前端的图片也要设置跨域image.crossOrigin = 'anonymous'
    3v35Q0.jpg
    二者相结合,用猪圈密码解析改图
    3v3oLT.png
    但是具体用那哪一副呢?
    经过我的枚举思考
    上一组密码对应日志作者符号加密法破译
    下一组密码对应比尔符号加密法破译
    3v3OY9.gif
    不得不说作者脑洞感人至深!

    第三十三关

    3xDtsg.png
    提示
    3xDReJ.png
    我们先查查标题
    用Unicode可知这是锲形文字符号,来自苏美尔语
    3xykin.png
    进一步搜索
    3xySsS.png
    读音ni ger,对应nargal
    Nergal在古苏美尔语中本意是火星之神即战神,亦为火神,远射之神
    有了新线索——火星,苏美尔语
    由于苏美尔语以u开头,我们容易想到提示中黑框为u
    用Unicode可得
    3x6xHg.png
    放大
    3xgCZD.png
    根据提示容易联想到火星,进一步结合提示想到经纬度坐标
    于是我们在火星上查找该坐标
    3xc25j.png
    看这密集度我知道我已经找到了答案
    3xg8Wn.png
    具体如下
    3xgaeU.png
    第一个单词小写即为答案

    第三十四关

    3zzMVO.png
    用十六进制乘法转换
    196 227 = 44492 = 0xadcc = 0xc4 0xe3
    186 195 = 36270 = 0x8dae = 0xba 0xc3
    202 192 = 38784 = 0x9780 = 0xca 0xc0
    200 203 = 40600 = 0x9e98 = 0xc8 0xcb
    初步猜测应该是界,毕竟是hello world
    我们将左侧先转十六进制,然后再转Unicode
    得到
    3zzwdS.png
    看出来了什么吗?
    GBK编码即是左侧十六进制位...
    于是我们找到规律后,将c8cb转化为GBK编码
    得到答案为"人"
    再看看提示
    3zzxFe.png
    上一关我们用Unicode得到提示
    于是我们将"人"转化为Unicode再转十进制得到答案
    人=U--4eba(Unicode) = 20154(10)   

    第三十五关

    8SSmWj.png
    经过分析可得
    以上字母皆为直线所得,并未弯曲
    于是我试着百度证实我的猜想
    8SSYY4.png  

    第三十六关

    8SSqpj.png
    分析可得
    正整数n不能表示为a + b + c或a + bc的形式,其中a,b,c是不大于n(包括0 )的正整数
    有趣的是这个数列为有限数列
    15,55,87,95,143,255,303,447,551,735,1007,1295,2103,2407,3495,5447,5727
    我们用求数列通项公式的网站查证
    果然
    8SpYHf.png  

    第三十七关

    8SpyD0.png
    再看看提示
    8Sp2UU.png
    仔细思考思考
    发现密码是A1z26 密码和埃特巴什码的组合密码体
    Hold = Slow
    Glow = Told
    上下为一组
    左边是a-1
    右边是z-1
    Fe N Mn Fe O K
    26 7 25 26 8 19
    这是对应编号
    再将其二次转化
    所得答案恰好是埃特巴什的英文
    以下为程序描述
    8SCKld.png  

    终极隐藏关卡——EX-1——终章

    该关卡藏匿于第三十五关的源代码中
    所以说平时要注重养成乱翻原代码的习惯
    8SCBmq.png
    以下为题干
    8SPAjs.png
    以下是源代码的惊鸿一瞥...
    密集恐惧症请远离
    8SPGuR.png
    我开始以为是将base64转换成图片
    但是此方法于三十二关中曾经出现
    我尝试下载了音频
    用GoldWave进行波段分析
    所得波形如下
    8Sigy9.jpg
    分析分析
    8Si2LR.png
    某兄弟一波分析,盲猜成功,理由是字母的饱满程度...
    8SioWD.jpg
    于是我尝试用频段解析
    所得如下
    8Sibyd.jpg  

    结束了,真的结束了

    8SiOeI.png
    看着终点二字,我却还是下意识地查看源代码
    恍惚间想起,游戏已经结束了
    一切如同一场梦
    5天时间通关,平日除去上课,做作业以及复习时间,都以此为业余消遣
    此间也经历过心境的跌宕起伏,人生的大起大落,感情的挫折和对未来的迷茫
    但只要静下心来,我就会投身于此  

    再见,harrynull!

    你好,文化课!

    2020年,期待在安全峰会&CTF上,与你们相遇

    By——H.U.C 无始道长

    发表于 2020-11-13 10:08:00
    感谢分享
    使用道具 举报 回复
    发表于 2020-11-16 10:36:12
    太牛了,看不过来!
    使用道具 举报 回复
    发表于 2020-11-18 20:47:15
    大佬16关,三维图那个最后一张截图用的啥工具,求指导!
    使用道具 举报 回复
    发表于 2020-11-19 15:53:20
    先留个脚印
    使用道具 举报 回复
    发表于 2020-11-23 18:34:23
    tql ctf还能这么玩
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册