CFF2016 想了一会儿的题目

来源:互联网 发布:千元头戴式耳机 知乎 编辑:程序博客网 时间:2024/04/29 13:44

渣渣不怎么会,很多都只是看一下题目

下面这些题目都是想了几次才想出来的

总是lose的程序

稍微拿ida看了一下,发现scanf那儿可以覆盖v5的值,也就是可以把v5要执行的函数给换掉,原来v5执行的函数是lose,我之前直接改成 read_flag的地址,脚本是这样

read_flag   0804857D   入口地址

v4  44h

v5  4h   

相差64

 

结果不对。。(上午是不对的,但现在不知道为毛又可以了,坑爹啊)


小伙伴这么做的,他改的是win的地址,因为win会调用read_flag


 



影之密码

 

8842101220480224404014224202480122

一开始看到都是2的幂次,就查了下 幂数加密

http://baike.baidu.com/link?url=pk_ook24QZMaSO7eHEqHawLWaswbDfgVzHcGGB3YPtSlat-crmZqmKty9bqaWtr-xiTKcbiW1gNt7ldS03A4NK

提示八位大写字母,又发现有70,可以分成8

根据那个过程瞎折腾了一番,提交不对,后来想直接加一下,对应大写字母

真的是这样,就出来了

 



 

远程登录系统

 

wireshark 用这个过滤  tcp contains "flag"

然后分析tcp

发现有四个flag,都试一下就出来了

 



德军的密码

 

先把秘钥转成二进制,96

然后密文是84

相差12

因为每8位二进制是一个ascii码字符

所以猜测是密文的每组都少了一位

把密文按7位分组

每组前加一个0

最后把处理之后的密文跟秘钥异或,就出来了

a='000000000000000000000000000000000000000000000000000000000001011100000110000100000001010000000001'b='010101110100010101001100010000110100111101001101010001010101010001001111010000110100011001000110'c=''for i in range(len(a)):       c+=str(ord(a[i])^ord(b[i]))print c


稍微转化下就好了



0 0
原创粉丝点击