渣渣不怎么会,很多都只是看一下题目
下面这些题目都是想了几次才想出来的
总是lose的程序
稍微拿ida看了一下,发现scanf那儿可以覆盖v5的值,也就是可以把v5要执行的函数给换掉,原来v5执行的函数是lose,我之前直接改成 read_flag的地址,脚本是这样
read_flag 0804857D 入口地址
v4 44h
v5 4h
相差64
结果不对。。(上午是不对的,但现在不知道为毛又可以了,坑爹啊)
小伙伴这么做的,他改的是win的地址,因为win会调用read_flag
影之密码
8842101220480224404014224202480122
一开始看到都是2的幂次,就查了下 幂数加密
提示八位大写字母,又发现有7个0,可以分成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
稍微转化下就好了