谈谈Wechall几道题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/tch3430493902/article/details/102640261

Wechall是国外一个著名的解题网站,不说它是CTF是因为Wechall社区更愿意把解题的过程看作一个充满乐趣的挑战,而不只是机械地获取一道flag。
Wechall社区给人的感觉是青春、自由和勇敢,正如其名字所代表的含义:We challenge it!

博主近来在Wechall上刷了一些题,本着技术分享和加深理解的想法,把其中一些认为有教育意义的题拿出来谈谈。
当然,博主现在还是个菜鸡,所以有不对之处请大佬批评指正。

一、math Pyramid

挑战链接:math Pyramid
为什么首先要拿这道题出来说呢?因为我在这里徘徊了很久,最后发现了问题所在:思维惯式

我们看看这道题的要求:
给出以正方形为底、各边长为a的三角锥体积的计算公式,要求用少于10个字符表示。 题目给出了公式例子并提示了一些符号。
在这里插入图片描述
乍一看,这是一道挺简单的数学题啊,我们很容易得出其体积计算公式为 v [ a ] = 2 a 3 6 v[a]=\frac{\sqrt{2}*a^3}6 ,换成题目要求的形式就是sqrt(2)*a^3/6

此时真正的问题悄然而至:我们化出的公式有13个字符,而题目却要求用9个甚至更少的字符来表示,然而光一个"sqrt()"就花了6个字符,也就是说我们剩下只有三个字符可用了,然而这三个字符该如何完成公式中剩下的部分呢?你仔细想想。

想好了没有?Enough!Enough!这个问题你想破脑袋都想不出的,因为从一开始我们设想的方向就是错误的:题目中给的提示"sqrt()"是一个误导,这道题借用了思维惯式的力量来打击challenger。

话只能说到这里,剩下的你再想想,说不定会发生意想不到的作用。

二、LSB

题目链接:LSB
第一次做图片隐写,就当开山之作啦,从里面学会的知识有图像格式编码和相关工具的使用。

题目要求:
交代的很清楚,这就是一道Simple隐写术。
在这里插入图片描述
首先二话不说,先把它拖进隐写解密工具stegsolve看看,界面是下面这样的:
在这里插入图片描述
这个工具的功能集中在analyse,包含的功能有分析文件格式、提取通道数据、图像数据偏移、分帧和组合图像。我们一般用到的功能是提取通道数据,在这里可以根据需要对RGBA模式的四个通道进行数据提取并判断。然而对于这个题,我们使用软件作者提供的快速查找功能就足够了,即下方的翻页键。

我们翻到red plane 1得到flag:
在这里插入图片描述
然而我在这里也有点困惑,即red plane 1代表什么东西?是按顺序将红色通道上位1所有值组合在一起构成一张图片?希望以后的学习过程能把这个问题解决,我这里就暂且只知其然了。

三、Programming 1

题目链接:Programming 1
一直觉得编脚本很难,也一直没有入手这个技能,但通过这个问题的解决我意识到:编脚本就是普通的编程,不过是实战而已。

看看题目要求:
要求我们在进入页面受到message后1.337秒之内再次发起一个http请求,并附带我们收到的message。很明显,这道题靠手速是完不成的,而且既然题目名称也暗示了“编程”,那我们就编个小脚本吧。
在这里插入图片描述
废话不多说,直接上脚本(我写了注释的哦):

import urllib.request   #python内置的urllib库,用于http通信

url1='https://www.wechall.net/challenge/training/programming1/index.php?action=request'#存放消息的第一个url
url2='https://www.wechall.net/challenge/training/programming1/index.php?answer='#我们要在1.337秒内发起请求的url

#第一次请求
request1=urllib.request.Request(url1)
request1.add_header('cookie','WC=12161905-47396-jrAE31POHPrfCHB8')#别忘了带上你的cookie
data1=urllib.request.urlopen(request1).read().decode('utf-8')#解码数据:通过测试验证,url1返回的数据只包含message,省事了
print("the message is %s"%data1)

#第二次请求
url2=url2+data1#拼凑到url2上
request2=urllib.request.Request(url2)
request2.add_header('cookie','WC=12161905-47396-jrAE31POHPrfCHB8')
data2=urllib.request.urlopen(request2).read().decode('utf-8')#一样的过程。
print("send the message %s again!"%data1)
print("the new data is a html file,show you below!")
print(data2)

然后咱看看效果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/tch3430493902/article/details/102640261