idf几道CTF的解法

不怎么玩CTF,偶尔玩一下,还是有点意思。

地址:http://ctf.idf.cn/

WEB狗主要玩了【牛刀小试】和【天罗地网】


被改错的密码

这道题其实蛮简单的,就是解密:cca9cc444e64c8116a30la00559c042b4

第一眼看猜测是MD5,不过是33位字符串,就用Hash-Identifier跑了一下居然是 SSHA-1



这里我有点纳闷,看了下SSHA-1的算法资料,并解不出来;

我想了下,既然是被改错,那很可能是增加了一位的MD5加密。

so,两个思路:

1. 查询MD5表,一位一位去掉,然后遍历的查询;

2. 字典生成MD5,然后特征比对。


我用了第二种方法。

字典用了常用的,然后把这个站点的域名、名词都丢了进去;

特征也就判断前四位或者后四位相同即可;

参考代码如下(passwd.txt是字典文件,把idf, ctf, ctf.idf.cn, idf.cn这些都扔了进去):

def md5_crack():
    key = "cca9cc444e64c8116a30la00559c042b4"
    p = open("passwd.txt")
    ct = 0
    while 1:
        lines = p.readlines(1000)
        if not lines: break
        for line in lines:
            ct += 1
            passwd = line.strip()
            md5_p = hashlib.md5(passwd).hexdigest()
            if md5_p[:4] == key[:4] or md5_p[-4:] == key[-4:]:
                print "wctf{%s}" %passwd, md5_p

    p.close()


果真如此,跑出来结果如下:

wctf{idf} cca9cc444e64c8116a30a00559c042b4


聪明的小羊

这个没啥难度,一看就加密,就栅栏密码

用py简单的写了个解密:

def fence_decrypt():
    key = "tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren."
    key_length = len(key)
    chunk = []      # 分组可能性
    for i in range(2, key_length):
        if key_length%i == 0:
            chunk.append(i)

    for c in chunk:
        print "分为%s" %(c)
        b = key_length / c
        dec_key = ""
        tmp_dict = {}

        # 拆分
        for mod in range(b):
            #print mod
            for k, v in enumerate(key[mod*c:(mod+1)*c]):
                if mod not in tmp_dict:
                    tmp_dict[mod] = v
                else:
                    tmp_dict[mod] += v

        # 合并
        #print tmp_dict
        for i in range(c):
            for x in tmp_dict:
                dec_key += tmp_dict[x][i]

        print dec_key


啥?

这道题细心一点就知道了,看到了这个图片,就知道答案了。

直接看图片二进制,轻松找到答案。


古老的邮件编码

这个有点意思,以前还不知道有这个编码,UU编码。
python支持uu解码,so毫无难度,最后中文转换一下编码即可
def uu_encode():
    uu_begin = """begin 666 <data>
"""
    uu_end = """
end
"""
    content = """MR,O)^KNYU>;*Q[*[P_?#Q+"AHZS6Q\G,LKNYNZ.LR;;2LK*[N^&CK+/VN/;,
MXK:\TJJ]RKZAQ-36K:&CH:,*M/.XQ;3PL+B^S<K'U>+1^;#)=V-T9GMU=75U
*=65N8V]D95]??0``"""
    uu_str = uu_begin+content+uu_end
    print uu_str
    print uu_str.decode("uu").decode("gb2312")



不难不易的js加密

JS的题还算比较简单,不过太久没看JS,解这道题花了半小时。。。。。

首先要读懂JS,不过还蛮有意思的。

印象中要fuzz一下字符串,跑一下MD5,jiami,其他的没啥问题。



其他的题目基本都没啥难点,可能







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值