CTF【每日一题20160613】

密码学--CTF Crypto 总结 密码学简介 密码学(Cryptography)一般可分为古典密码学和现代密码学。 其中,古典密码学,作为一种实用性艺术存在,其编码和破译通常依赖于设计者和敌手的创造力与技巧,并没有对密码学原件进行清晰的定义。其主要包含以下几个方面 单表替换加密 多表替换加密 奇奇怪怪的加密方式 而现代密码学则起源于 20 世纪末出现的大量相关理论,这些理论使得现代密码学成为了一种可以系统而严格地学习的科学。现代密码学又可以简单的分为以下几个方面 对称密码,以 DES,AES,RC4 为代表。 非对称密码,以 阅读详情

谁是卧底
原题:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=49
武林中某知名杀手在一次任务中失败,然后逃窜到了人群中,当时那个社会并没有我们现在这么发达,满地都是文盲,而这些文盲甚至连一句完整的英文都说不出来,所以其实只要用心去发现,就会很容易发现这个稍微有些文化的杀手是谁哦~答案wctf{杀手的英文名}
人群→ http://pan.baidu.com/s/1bnq6nmR
密码: 988u

——————————–问题与答案的分界线———————————-
分析:

这个题的含义是要分析其中的完整单词,linux下有个工具叫做wc,这个命令用于统计文件中有多少字,多少行,多少字节。用法如下:
wc [-lwm]
-l:仅列出行
-w:仅列出字数
-m:多少字符
wc常用与统计一个目录中包含多少文件:ls  |  wc –l

在本题中,可以如下图所示运行:

这里写图片描述

0,1,5586640分别表示该文件由0行(其实就是1行),1个word,5586640个字符构成。这里的1个word表示的是两个空格间的词,其实这个文本中所有字符都连在一起,没有空格,所以这个word的长度就是5586640,对我们没有意义。
查阅了一个有趣的统计网站http://hearle.nahoo.net/Academic/Maths/Sentence.html
这个网站统计了英文单词和句子的平均长度,这个网页上给出了平均值:The mean of the values taken from the table can be used to draw a line of best fit on a scatter diagram. The mean values of X and Y are as follows:
X =  = 5.084    Y =  = 24.46
其中:
X = Mean word length throughout text
Y = Mean sentence length throughout text    
这个值可能不太准,但应该影响不大,我们姑且认为一个英文句子的长度约为25个字符。这将作为后续分析的基础知识。
要找到卧底,就是要找到一句相对完整的句子。我们的分析程序将从这个文件中每次取出25个字符,作为一个句子,然后用一个英文单词列表文件去匹配它,统计这25个字符中有几个单词,然后记录单词数最大的那个句子在文本中的位置,或者直接存到一个变量里,找出来以后再用人眼识别一下,估计答案就出来了。
为了获取单词列表,我发现一个网站,它维护了一个英文单词表,并将其按使用频率进行排列,这个排列太有用了。http://www.newgeneralservicelist.org/
根据这个网站提供的1.0版本的NGSL,我整理了2480个单词,这些单词是排名最靠前的2480个,既然过去没有多少有学问的人,那么他们会的单词应该都是些常用词,所以用这些词做字典就够了。
为解决此题,写了如下程序:
# -*- coding: utf-8 -*-   
import datetime
'''
本程序很丑,没有经过优化,仅为简单解答该题目
输出结果是一个列表,表中每行前的数字表示后面100个字符中可组成多少个英文单词
根据题意,卧底是最有可能说出完整句子的人,
这个程序就是通过计数来帮助人判断一个字符串是否为英文句子。

'''

def getwordnum(string,wordlistfile):
    count = 0

    w = open(wordlistfile,'r')#open the word list
    try:
        for aword in w:         
            word = aword.strip('\n').strip('\r').strip()
            if string.find(word) != -1:
                count += 1
    finally:
        w.close()
    return count

if __name__ == '__main__':
    #To record the algorithm start time'
    start = datetime.datetime.now()#time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) 
    maxnum = 0
    thewords = ''
    f = open('whoiswoldy.txt','r')#open the object of analysis

    try:
        done = 0
        while not done:
            a = f.read(100)#每次取100字符,原先设想每次取25字符(英文句子平均长度),但效率太低
            if a != '':         
                num = getwordnum(a,'wordslist.txt')
                if maxnum < num:
                    maxnum = num
                    print '----------------'
                    print maxnum,a
            else:
                done = 1
    finally:
        f.close( )
    #To record the algorithm end time'
    end = datetime.datetime.now()
    print 'The program costs '+ str((end-start).seconds)

在pypy(python的一个快速版本)下运行该程序,速度会快不少。得到的结果如下:

----------------
10 kkjfemiwirijkbukxgkzkrsmgkhnhubtbtdwxszikocbyclayrosdepwvxjemcftfurniturevjfl
trpxepdyhitpetqewcsajkv
----------------
13 asurykoccsmemamanpempirepchpzooehibxnabbhlucxcqhdodinwtgxdqomldxtkheurrzcdimb
cdacpyaaolrhktxvuyknone
----------------
17 yrsgvidwfodwxomxsndgyvlitwdoytztbohimdsxdgqykqadcupdwofpdwrohpsolverhtzhworry
qjsrelationglclbbyboard
----------------
18 xttlqnvkmdqxgwxxfyyodsqxfmetydelightkmanufacturebywgkwfjavdltupgaykrwkxxuaabi
kbvjgdrwpddonsrnojbsdmr
----------------
19 lfsarttheretdpqxcrmuztxbsdfvyzgyxwrtuowallxieioeewetajmwcaasjjislandjtdqobnbe
fzlettauqvrwrigltwtzkxq
----------------
23 pddoperformmsvwkychrxwypxuekgbdgaawrotwknscgwzxmcsomehowevjypmwyrfupusfivulfr
njjscatlsbithusuhlkqgrw
----------------
26 lqxsatisfactorysvfklobaklogmsqinclearvybqjaarecnvwhiteofnnqakgnujanotheryufum
wbgphjqslsgvpmgtqpduily
----------------
27 gojashlfpxlmglpqmostonolsbkgnjqaizcmoxdeterminebogqfgpatienceftablerfjmxswxxj
yyearzanywherewedkpyabm
----------------
28 hazbornndomhfchvlcwhatwillyouseeifyouthrowthebutteroutthewindowwzqmtwmyjutipv
qetrsshyosypzydeveloppo
----------------
30 yearthtsroperatermcjybabisqmhzoceijwifoffphwionpqxujcneverywheresdkdmxbnasbyd
yotzbdtofjnqoilfnnzxlme
从下向上看,发现命中28个单词的那100个字符中,有一句完整英文:
whatwillyouseeifyouthrowthebutteroutthewindow
这是个英文谜语,解答为butterfly

本题答案:wctf{butterfly}
记录成功用bkcrack分别对压缩包进行明文攻击 2.输入bkcrack -C res.zip -c flag.txt -P ohh.zip -p flag.txt,其中-C表示密文(cipher),-p为明文(plaintext),明文和密文中明文的部分对应,这么说是因为上午试过了把secret.txt或者整个压缩包作为密文,然后都找不出key!这条指令,-U表示更改密码 前面是新压缩包的名,后面是你设置的密码,欧克,flag拿到了!-c组合-p拿到key,-c组合-k和-d拿到解密文件,-c组合-k和-u是改压缩包密码。就是ACTF明文攻击那题... 阅读详情

相关推荐

南邮CTF练习题——web题

南邮CTF部分题解

dcison的博客 4万+

NSSCTF刷题wp——单表替换密码

NSSCTF Crypto 模块 单表替换密码 [HGAME 2022 week1]Matryoshka ID:1855 打开Matryoshka.txt,发现是一堆点,看标签可能是Braille盲文,仔细比对后发现重点不是将盲文翻译成英语,而是后面得标签莫斯密码,可以发现⠌非常像平时解莫斯密码的分隔符,⠨和⠤就很可能对应着摩斯密码里面的长,短码 在线摩斯密码工具 结果前面完全不对,后面部分对,考虑到在莫斯密码里面,长短和短长是完全不一样的,反转一手 ⠨⠨⠨⠨⠤⠌⠤⠨⠨⠨⠨⠌⠤⠤⠨⠨⠤⠤⠌⠤⠨⠨⠨⠨⠌

YougerXen的博客 4120

md5crack3.zip

md5解码代码器

CTF新手,请问从本地访问flag!

本地访问加header 127.0.0.1 http://123.206.87.240:8002/localhost/ burpsuite(强大,但麻烦,有点慢) 抓包加上下面一句话 X-Forwarded-For: 127.0.0.1 (或者client-ip: 127.0.0.1,不同题不一样) ip(简单快捷) 3. header(个性化定制头) 4.hackbar(最快) http://123.206.31.85:1003/ ...

algae 9万+

CTF-rootme 题解之Local File Inclusion - Double encoding

LINK:https://www.root-me.org/en/Challenges/Web-Server/Local-File-Inclusion-Double-encoding    http://challenge01.root-me.org/web-serveur/ch45/ 本题考察的是本地文件包含漏洞和URL编码,而且是二次编码。 查看链接如下: http://challeng...

weixin_30478923的博客 778

初识CTF

ctf之路任重而道远,只有一点点学习才能不断超越自我。加油!

Moshengls_的博客 980

CTF 竞赛入门指南(CTF All In One)学习(十)

密码学导论密码学密码使用学对称密钥算法公开密钥算法密码分析学古典密码学常见替换密码单表置换密码凯撒密码简单替换密码仿射密码 密码学 密码使用学 密码分析学 密码使用学 无密钥算法 对称密钥算法 公开密钥算法   对称密钥算法 双方共享一个密钥,并使用相同的加密和解密算法。 相关术语: 明文:被传递的消息。用 M 表示。对于计算机,M 指的是 2 进制。 密文:加密后的消息。用 C 表示,对于计算机,C 指的是 2 进制。 加密函数:作用于明文 M,得到密文 C,用 E 表示。 数学公式:???

m_pNext的博客 921

密码学小知识

最近在网上找到了一个比较好的知识总结, 一、古典密码 在CTF中,我们经常能看到一些简单的古典密码。在古典密码学中,我们主要介绍单表替代密码,多表替代密码,以及一些其它比较有意思的密码。 1、单表代换密码:代换是对每个字母逐个进行。 在单表代换中,明密文一一对应。所以说,一般有两种方式来进行破解:密钥空间小时可采用暴力破解;密文长度足够长时,使用词频分析(字母:E>T>A&gt...

weixin_43404314的博客 2443

PolarD&N CTF—小心有F射

仿射解密函数:F(x) = a-1(x - b) (mod m),其中a-1是a在Zm群的乘法逆元,m是字母的数量。3、即将纯文本字母的整数值乘以a,然后将b加到结果中,最后我们取模数m(也就是说,当解除以m时取余数,或者取掉字母的长度,直到得到小于该长度的数字)。拿到这个文本的第一时间是没有思路的,因为确实是我没见过的密码,但是仔细观察第一行字符串很像公式,就搜索了一下,然后就搜索到了这个密码。2)找到的明文字母的整数值后,对这些值执行计算,在此例中,所需的计算为(5x + 8);

m0_64447841的博客 498

CTF中Crypty(密码类)入门必看

常见编码 ASCII编码 ASCII码大致可以分为三部分组成: 第一部分是:ASCII非打印控制字符 第二部分是:ASCII打印字符; 第三部分是:扩展ASCII打印字符。 在线ASCII码与进制互相转换 这是ASCII码表   具体分析链接ASCII码详解 base64,32,16,编码 这里我们拿常见的base64来举例 原理:base64是一种基于64个可打印字符...

成长之路 4万+

[安洵杯 2019]JustBase(替换表)

我们看到题目是一些杂乱的字母和符号,但从题目和末尾的两个==号,我们猜测是base64加密,但题目未出现1-9数字,而base64不包含!@#$%等字符,所以我们考虑将字符!@#$%按照键盘替换成数字1-9.也可以采用文本文档里面的“替换”,自己手动依次替换。

2302_80322812的博客 488

misc-明文攻击

大致原理是当你不知道一个zip的密码,但是你有zip中的一个已知文件(文件大小要大于12Byte)或者已经通过其他手段知道zip加密文件中的某些内容时,因为同一个zip压缩包里的所有文件都是使用同一个加密密钥来加密的,所以可以用已知文件来找加密密钥,利用密钥来解锁其他加密文件。

Luodehahajiang的博客 2349

网络安全实验室CTF练习部分题目(持续更新)

1、脚本关:微笑一下,过关地址:http://lab1.xseclab.com/base13_ead1b12e47ec7cc5390303831b779d47/index.php 查看源代码: include('flag.php'); $smile = 1; if (!isset ($_GET['^_^'])) $smile = 0; if (preg_match

技术学习人生 8万+

CTF web总结

欢迎光顾我的新博客:https://www.giantbranch.cn 本文链接:http://blog.csdn.net/u012763794/article/details/50959166 本文根据自己的做题经验及各大练习平台不断更新,若我最近懒了,没怎么更新,请在下面提醒我或鼓励我 仅作为自己的笔记及刚入门的童鞋,大牛勿喷 基础篇   1.直接查看源代码   http:/...

giantbranch的专栏 8万+

实验吧 认真一点

        本实验是输入id获取结果,查看页面源码,没有什么注释信息。随便输入个1,结果为You are in ...............,其他的id显示为You are not in ...............        使用Burp suite进行模糊测试,结果为or部分sql命令都可以使用。        但是使用or命令注入失败,但是从模糊测试来看是没有屏蔽or关键字,应该...

xingyyn78的博客 7259

(wp)buuctf杂项达芬奇密码

转自个人博客0pt1mus buuctf是一个收录了各个比赛的题目的靶场,真的是什么题都有,各种脑洞,稀奇古怪的加密编码类型,甚至还有什么中文电码之类的稀奇古怪。 大家有兴趣可以去刷刷。 解题思路 首先这道题题目是达芬奇密码,百度之后发现这是一部电影,当时也没想的去看一下电影的简介什么的,后面加buuctf关键字,也没有找到相应的wp。果断google,找到大佬的wp,发现在电影简介中会提到——斐...

0pt1mus 4510

计蒜客习题:单词拼接

问题描述 花椰菜君给了蒜头君 n 个单词,如果一个单词的最后一个字母和另一个单词的第一个字母相同,那么两个单词就可以连接在一起组成一个新的单词。现在花椰菜君想要蒜头君计算一下,给定的 n 个单词是否可以全部连接在一起。 输入格式 第一行输入一个整数 nn,代表一共有 n 个单词(1≤n≤100,000)。 接下来输入 n 行,每行输入一个单词。单词均由小写字母组成,每个单词长度不超...

LiuKairui的博客 1425

CTF每日一题20160627】简单的ELF逆向

简单的ELF逆向(来源:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=39) 这里这里 http://pan.baidu.com/s/1kTl5wxD下载后是一个名为ElfCrackMe1的文件。初级指南: ELF反调试初探:http://www.freebuf.com/sectool/83509.html 浅谈被加壳ELF的调试:

hhhparty的博客 1万+
上一篇: CTF【每日一题20160611】
下一篇: CTF【每日一题20160614】
hhhparty
博客等级 码龄11年 136粉丝 34原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值