您现在的位置: Tracy‘Blog > 博客 > 一些破文 > 正文
BCTF——【他乡遇故知】

        这题挺有新意的,也算是这次比赛的另比较大的收获吧~用的是Tupper公式。
        题目描述如下:

描述
逃离到中国的米特尼克与以前的老朋友都失去了联系,这让他常常怀念逝去的时光。在一次潜入某著名外企尝试获取重要资料的行动中,米特尼克还没有拿到目标文件就不幸被保安发现了。在逃离的过程中,他闯进了一个办公室,结果惊奇地发现自己二十年前的老朋友 Tupper 就在眼前。更神奇的是,Tupper 知道米特尼克需要什么,给了他想要的东西并且帮助他成功脱逃。你知道米特尼克拿到的信息是什么吗? http://bctf.cn/files/downloads/meeting-tupper_baaa58809f2a0435cb5f282ce4249fdf.txt


        来,在解题之前先来看看这个有意思的东西。我们先把一张李小龙的图片转成用字符表示的模式如下:


        原图:

    转换后:    

        这是缩小了之后看到的样子,放大了,其实都是&&&&拼凑起来的~
        在经过Tupper公式计算后,得到的图形如下:

        绿色背景是因为的系统设置默认色~于此公式无关。
        下面来解释原理吧~
        上面图中我们用1代表&,0代表空格和其他字符。将它转换成2进制,这不是单一的直接转换的,而是根据坐标来的,比如你先去文本里输入的是下面的这个图形:
###
# #
# #
###
        那转换得出的2进制并不是111101101111.而是111110011111.也就是将原本横坐标的表述方式换成纵坐标。
        之后再将此2进制转成十进制。并且乘以图像的高度,在上面这个#号的例子中,我们应该是得到十进制为:3999。乘上高度4后等于15996.
        这个就是我们的得到的k值。
        我们把这个k代入到Tupper公式中。脚本如下:

#!/usr/bin/env python2
#-*- coding:utf-8 -*-
#Tracy_梓朋
#2014年3月14日
#
wide=3
height=4
def Tupper_self_referential_formula():

	k = 15996

	def f(x,y):
		d = ((-height * x) - (y % height))
		e = reduce(lambda x,y: x*y, [2 for x in range(-d)]) if d else 1
		f = ((y / height) / e)
		g = f % 2
		return 0.5 < g

	for y in range(k+height-1, k-1, -1):
		line = ""
		for x in range(0, wide):
			if f(x,y):
				line += "*"
			else:
				line += " "
		print line


#Method name =Tupper_self_referential_formula()
if __name__ == '__main__':
    returned = Tupper_self_referential_formula()
    if returned:
        print 'Method returned:'
        print str(returned)

 

 

        打印的结果是:
***
* *
***
        原理嘛,自己体会下就出来了。(其实就是在对于的像素点放上对于的*~不过你得先把你的图片变成2进制~)很多人显示不出图片,是因为你的console界面不够,最好的办法是写到文件里,然后,用一个可放缩的编辑器缩小了看~
        我们再看题目吧~
        下载txt文件,看到下面的这个东西:

 

        英语看到了,十进制看不懂~怎么办?他提到了它的paper,然后呢,我们就去搜索Tupper这个人。发现了Tupper自我指涉公式:

        这个神奇的公式的作用大家自己看wiki吧~
http://zh.wikipedia.org/wiki/%E5%A1%94%E7%8F%80%E8%87%AA%E6%8C%87%E5%85%AC%E5%BC%8F
        也就是说,我们要把那些个10进制丢到这个公式里去计算,然后看有些什么信息~

        在flag的前一句写的是,Fine, then, here is your flag in 61,17 is too weak,这个比较坑,无数同胞被坑~


        我们把原本的17改成61,就可以得到下面的结果了:

 

 

       好吧,这篇就写到这里了~

        后话,以这个方式去哄女朋友开心,貌似也不错哈~

 

  

——Tracy_梓朋

2014年3月14日

发表评论(0)
姓名 *
电子邮件
QQ
评论内容 *
验证码 *图片看不清?点击重新得到验证码请输入图片后链接字符‘a’